Viewing sub-tasks on the Rapid Board in Plan Mode

Neil Padgen September 30, 2012

I'd like to be able to view sub-tasks on the Rapid Board in Plan Mode.

We estimate our Stories and Epics in Story Points, then during the Sprint Planning Meeting we break them down into tasks with time estimates against them. However:

- If we start the Sprint before estimating the sub-tasks, then we can see the tasks in Work mode. However, any tasks created get added as "Scope Change" in the Sprint Report; also, the grey "ideal line" in the burndown chart is misleading as it runs from 0 to 0 through the length of the Sprint.

- If we could start the Sprint after estimating the sub-tasks, then this would resolve the above issues ... but we can't see the sub-tasks until after we've started the Sprint.

(I see this sort of question was asked in April - https://answers.atlassian.com/questions/49582/is-there-anyway-i-can-see-my-sub-tasks-on-plan-mode-on-rapid-board - but didn't get much of an answer.)

5 answers

1 accepted

1 vote
Answer accepted
sclowes
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.
October 1, 2012

Hi Neil,

You can see them today, they appear in the sub-tasks tab on the detail view. Check out this screenshot

Just create the tasks and estimate them in the sub tasks tab before starting the sprint.

Thanks,
Shaun

Normand Carbonneau April 29, 2013

Hi Shaun,

Any answer to Jeff scenario above as this is exactly what I am also struggling with. The rough estimates are done at the Story level. Then, more detailed estimates are done at Sub-Tasks level. In a single story, I can have for example 5 sub-tasks assigned to 3 different people. Before starting the sprint, I want to know how much time is assigned to each developer using a quick filter with Assignee = "developer xyz". I am expecting to see the total remaining hours, which is the sum of all subtasks assigned to "User xyz".

But this is not possible because the sub-tasks are not visible in Plan Board. Any suggestion?

Thanks, Normand

boardtc
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.
September 8, 2013

Shaun,

This is also an issue for me. We organise our boards between teams using components. So we might have a story with sub tasks "assigned to" different teams via the component field.

The issue is that neither the story or the relevant sub task show in planning mode though the filter behind the board pulls in the sub task.

Is there any workaround to enable the sub task to be added to the sprint since it is not accessible in planning mode?

Thanks, Tom.

0 votes
Ubisoft
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.
February 25, 2014

Hello,

I have made a workaround

I did a little something its not perfect at all should any of you do better just put it here.

- It add a button left of PLAN mode

- It work only for certain user since it can create a load on the isntance (get the issues data in rest)

It add the sum of subtask instead of story point/time estimate when you click on it. Also add a custom field (we have another kind of priority system). So if you use a quick filter you can use your quick filter, then click the new button. It will show the sum of all subtsak into your planning board.

Add this code into the Announcement banner

<script type='text/javascript'>
AJS.$(document).ready(function () {
    var username = AJS.$('#header-details-user-fullname').attr('data-username');
    console.log(username);
    if (username == 'name1' || username == 'name2(changeme)') {
        var path = window.location.pathname;
        console.log (path);
        if (path.substring(path.lastIndexOf('/') + 1).indexOf('RapidBoard') > -1) {
            AJS.$('#ghx-modes').before('<button class="aui-button" id="add-ubi">Show CF and Aggregate Time</center>');
                AJS.$('.add-ubi').on('click', function () {
                    $('add-ubi').trigger("click");
                });
                AJS.$("#add-ubi").click(function () {
                    //AJS.$("#add-ubi").toggleClass("active");
                    //AJS.$("#add-ubi").remove();
                    AJS.$('.ghx-issues > div').each(function () {
                     try {
                            console.log('Found issue list in sprints');
                            var row = this;
                            var issueKey = AJS.$(this).attr("data-issue-key");
                            //console.log('Found issuekey' + issueKey);
                        if (issueKey)
                        {
                            
                            AJS.$.getJSON(AJS.contextPath() + '/rest/api/latest/issue/' + issueKey, function (data) {
                                console.log('Got data for - ' + issueKey);
                                if (data.fields.customfield_10222 || data.fields.customfield_10222 != null)
                                {
                                    var value = data.fields.customfield_10222.value;
                                    if (value.lenght)
                                    {
                                    value = value.replace("'", "\'");
                                    var actions = AJS.$(row).find('.ghx-end');
                                    AJS.$(actions).before('<style type="text/css"> .ghx-issue-compact .ghx-end-ubi{position:absolute;right:-20px;top:5px;}</style><div class="ghx-end-ubi"><span title="Ubi Priority">' + value + '</span></div>');
                                    }
                                }
                                if (data.fields.aggregatetimeoriginalestimate)
                                {
                                    var value2 = data.fields.aggregatetimeoriginalestimate / 60 / 60 / 8;
                                    var actions2 = AJS.$(row).find('.ghx-end .aui-badge');
                                    AJS.$(actions2).html(value2.toFixed(2).replace(/[.,]00$/, "") + "d");
                                }
 
                            });
                        }
                     }
                        catch (ex)
                        {
                            console.log ("ERROR");
                        }
                    });
                    AJS.$('.js-issue-list > div').each(function () {
                        try {
                            console.log('Found issue list in backlog');
                            var row = this;
                            var issueKey = AJS.$(this).attr("data-issue-key");
                        if (issueKey)
                        {
                            console.log('Found issuekey' + issueKey);
                            AJS.$.getJSON(AJS.contextPath() + '/rest/api/latest/issue/' + issueKey, function (data) {
 
                                console.log('Got data for - ' + issueKey);
                                if (data.fields.customfield_10222 || data.fields.customfield_10222 != null)
                                {
                                    var value = data.fields.customfield_10222.value;
                                    console.log("we are inside of value" +issueKey)
                                    value = value.replace("'", "\'");
                                    var actions = AJS.$(row).find('.ghx-end');
                                    AJS.$(actions).before('<style type="text/css"> .ghx-issue-compact .ghx-end-ubi{position:absolute;right:-20px;top:5px;}</style><div class="ghx-end-ubi"> <span title="Ubi Priority">' + value + '</span></div>');
 
                                }
                                if (data.fields.aggregatetimeoriginalestimate != null || data.fields.aggregatetimeoriginalestimate != 'undefined' || data.fields.aggregatetimeoriginalestimate != "" || data.fields.aggregatetimeoriginalestimate.lenght != 0)
                                {
                                    var value2 = data.fields.aggregatetimeoriginalestimate / 60 / 60 / 8;
                                    var actions2 = AJS.$(row).find('.ghx-end .aui-badge');
                                    AJS.$(actions2).html(value2.toFixed(2).replace(/[.,]00$/, "") + "d");
                                }
 
                            });
                        }
                    }
                            catch (ex)
                    {
                        console.log ("ERROR");
                    }
                    });
        });
    }
}
});
</script>

So here is it I made it quick but ajust it to your need

Martin Poirier

Ubisoft

0 votes
Adva Ohayon February 17, 2014

I faced the same issue and found the following workaround:

1 - Create a filter with the sprint ID

2 - Create a workload pie chart of the filter you created

The workload pie chart summarizes the estimations by assignee, or anything else.

0 votes
Lars Sundell June 26, 2013

I also find the missing sub-tasks lacking. Out case is that sometime we break down a task that has to tun over several sprints into sub-tasks, some to be added to sprint n and some to sprint n+1. Not being able to see the sub-tasks in the planning view makes this "impossible" to do.

The version side bare has a choice to view "All issues". A sub-task is an issue in my head, so I look at this as a bug. If a someone decides that all sub-tasks should be closed in the same sprint in their flow, fine, use a filter to remove the sub-tasks form the view, but I do not think it is a good idea to force people to use a specific flow.

0 votes
Jeff Isenberg October 8, 2012

I have a different challenge. If a story has sub-tasks that need to be assigned to different people during sprint planning how can you get a total of the hours assigned to each person? Let's say person A has a story with 2 sub-tasks, each one is 1hr. If one sub-task is assigned to person A and the other assigned to person B how can I see that each of them has 1hr of work? When you filter the board for person A (using a quick filter) you get a total of 2hr of work assigned to them. When you filter for person B you get nothing.

Suggest an answer

Log in or Sign up to answer