Balanced assigning based on story points?

Tomislav Tobijas _Koios_
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
December 2, 2024

Hi,

We've got a question if it is possible to assign issues based on story points on issues that are assigned to different team members? Basically, we're looking at balanced workload assigning, just for Story Points.

I know that natively this isn't yet supported, but I was just wondering if anyone managed to design a process/workaround for that.

An example would be:

  • STORY-1: 10 Story Points; assigned to User 1
  • STORY-2: 8 Story Points; assigned to User 2
  • STORY-3: 11 Story Points; assigned to User 3
  • STORY-4: 5 Story Points; assigned to User 2

I would need to find a user who has the least amount of story points currently assigned and assign the created issue to them. In the case above, that would be User 1 (as User 2 has 2 tasks that in sum have 13 Story Points).

Of course, we are looking only at issues that are in statusCategory != Done or unresolved.

I was thinking of maybe using user properties (entity) or creating separate 'placeholder' tasks within the project, where each task would be assigned to a particular team member and contain the sum of all assigned story points. Then, once a new issue is created, automation would go through all of those user-specific tasks and somehow find the minimum value and assign the newly created issue to the assignee of the task with the minimum value.

*Note: I am just thinking out loud here and I'm open to any ideas or examples you might have.
*Note#2: I know this might not be a best practice when talking about agile methodologies but I would still like to see if it's possible or not.

Cheers,
Tom

3 answers

2 accepted

2 votes
Answer accepted
Bill Sheboy
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
December 2, 2024

Hi @Tomislav Tobijas _Koios_ 

I agree with your initial note at the end of the question, and...not only is this not a "better" practice, it is likely to cause several unintended consequences and problems for an agile team, such as incentivizing less collaboration and breaking trust with stakeholders.

 

Regardless of those problems...

This could be done using a dynamic, regular expression search of a list.  For example:

  • use lookup issues to gather all the issues in scope; for your scenario, consider excluding any unassigned issues
  • create a lookup table, perhaps named varPointsByUser, with one row for each possible assignee where
    • key is their accountId
    • value is the the sum of their story points assigned, based on the lookup issues result, with smart value, list filtering and and a wrapping math expression.  For example:
{{#=}}0{{#lookupIssues}}{{#if(equals(assignee.displayname,"Bill"))}}+0{{Story points}}{{/}}{{/}}{{/}}
  • create a variable with the regular expression to find the minimum value from the table
(\{key=.*, value={{varPointsByUser.entries.value.min}}\})
  • find the user record from the table which matches.  (The join / split "trick" is needed to squash the table rows into a string, removing object data.)
{{varPointsByUser.entries.join("~~").split("~~").match(varRegEx)}}
  • Use additional text functions to extract the "key", which is the user accountId value needed

This approach assumes one-and-only-one user has the minimum value.  When there are multiple, make adjustments to perhaps extract the first, or a random one.

 

Kind regards,
Bill

Tomislav Tobijas _Koios_
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
December 3, 2024

Wow, nice! So, with this, I managed to remove the need for placeholder tasks or Assets and do everything within one rule with only 1 trigger and 4 or 5 actions. 🤩

Really appreciate the detailed answer and reference to the article @Bill Sheboy !

Like # people like this
2 votes
Answer accepted
Tomislav Tobijas _Koios_
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
December 2, 2024

So what I've made (and it works) are placeholder tasks that 'store' the sum of Story Points of all assigned and to-do/in-progress tasks within the project. I'm basically using the system Story Points field to calculate the sum of active items. There can be only one 'placeholder task' per user; meaning specific users can only be assigned to one placeholder task. Anyway, this is just a storage.

2024-12-02_16-47-24.png

Then, I'm using automation to do the rest - checking all 'placeholder' tasks and finding the one with minimum Story Points value, getting the assignee from it and placing that same user to the newly created issue.

Also, I'm doing 'recalculation' of placeholder Story Points directly within this automation (in case reporter has entered Story Points value in the create issue screen), and I've covered the case if Lookup gets multiple issues/there are multiple 'placeholder' tasks that contain same amount of Story Points.

auto-screenshot.png

Not the prettiest solution, but it can do the job.

Also, there should be another automation that 'recalculates' Story Points on the placeholder task once the item is completed or if the Assignee is changed, but that's an easy part I would say.

If you have Assets this could probably work with just having users there and adding additional attribute for Story Points (so you don't need to have these 'placeholder' tasks).

In any case, if someone has any 'smarter' solution, I'm all ears.
*preferring to do this natively instead of using apps

1 vote
Stephen_Lugton
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
December 2, 2024

@Tomislav Tobijas _Koios_ Do you have access to Advanced Plans?

If so you can:

  • Create a Team for each User and In the team set capacity for that team

Capacity - Teams.png

 

Capacity - Team settings.png

  • Set up an advanced plans timeline 

Capacity - Timeline setup.png

  • View your Sprint and drag and drop items to each team (user)

Capacity - Sprints 2.png

 

Note: this example only shows one team (user) as the rest of the tasks will be unassigned and picked up by whoever is free, it's just that the 3 tasks assigned are follow-ons from the current tasks he's doing.  Also when we come to the refinement session we will be renaming those tasks.

Tomislav Tobijas _Koios_
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
December 2, 2024

Hi @Stephen_Lugton ,

Interesting... Didn't think of using Plans. I'm not sure if this project/client will be using Premium plan or not, however from the info I have, this particular request is not related to standard 'planning'.

With this solution, someone would still need to 'drag&drop' items for each team/user and, from the info I have, all of that needs to be done automatically. So as soon as a new issue is created, it needs to be automatically assigned to someone.

In any case, Plans are also not a bad idea so I'll pass that on to the team. Thanks!

Like Stephen_Lugton likes this

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
PERMISSIONS LEVEL
Product Admin
TAGS
AUG Leaders

Atlassian Community Events