{"id":1999,"date":"2010-08-22T12:32:57","date_gmt":"2010-08-22T16:32:57","guid":{"rendered":"http:\/\/judykat.com\/ken-judy\/?p=1999"},"modified":"2010-09-02T22:36:48","modified_gmt":"2010-09-03T02:36:48","slug":"making-daily-burnup-thoughtworks-studio-mingle","status":"publish","type":"post","link":"https:\/\/judykat.com\/ken-judy\/making-daily-burnup-thoughtworks-studio-mingle\/","title":{"rendered":"Making an iteration\/sprint burn up chart with Thoughtworks Studio Mingle"},"content":{"rendered":"<p>As I&#8217;ve said before, we use <a href=\"http:\/\/www.thoughtworks-studios.com\/mingle-agile-project-management\">Thoughtworks Studio Mingle<\/a> to track our backlogs.<\/p>\n<p>One thing Mingle has not provided for us in the time we&#8217;ve worked with it is a daily burn up. Kind of shocking.<\/p>\n<p>Last month, <a href=\"http:\/\/judykat.com\/ken-judy\/installing-thoughtworks-mingle-amazon-cloud\/\">we migrated our instance to the EC2 cloud<\/a>. I took advantage of that migration to un-cruft our Mingle instance, apply the <a href=\"http:\/\/www.thoughtworks-studios.com\/mingle\/2.0\/help\/xp_template_2.0.html\">XP template<\/a> and simplify card types and states. <\/p>\n<p>Now time to stop dumping data out of mingle to report status. Yes. Kind of shocking.<\/p>\n<p>The first step was to track the data points we need for a burn up.<\/p>\n<p>That involved creating a series of date fields to track the day on which a story moves from in analysis to ready for dev, in dev, in qa, ready for customer (QA done) and customer accepted.<\/p>\n<p>We also need a way to have those dates recorded automatically as part of moving cards from one state to another.<\/p>\n<p><a href=\"http:\/\/judykat.com\/ken-judy\/wp-content\/uploads\/public\/blogimages\/mingle-card-transition-screenshot.png\"><img decoding=\"async\" alt=\"Mingle card transition\" src=\"http:\/\/judykat.com\/ken-judy\/wp-content\/uploads\/public\/blogimages\/mingle-card-transition-screenshot.png\" title=\"Mingle card transition\" class=\"alignleft\" width=\"300\" \/><\/a>So we set up Mingle card transitions. <\/p>\n<p>This replaces the drag and drop behavior of a card from one swim lane to another with a button link on the card. This a bummer for our product team but it allows us to script transitions to both change the status and set the appropriate date field.<\/p>\n<div style=\"clear:both;\"><\/div>\n<p>Now to setup a burn up chart using Mingle charts and mql.<\/p>\n<div style=\"background-color: black; color: white; white-space: pre; width: 550px; overflow: auto; padding: 5px; font-size: 11px; font-family: courier new,monospace;\">\n{% dashboard-panel %}<br \/>{% panel-heading %}Current iteration burnup{% panel-heading %}<br \/>{% panel-content %}<br \/>{{ <br \/>    data-series-chart  <br \/>    conditions: (&#8216;Type&#8217; = &#8216;Story&#8217; OR &#8216;Type&#8217; = &#8216;Defect&#8217; OR &#8216;Type&#8217; = &#8216;Task&#8217;) AND &#8216;Iteration &#8211; Scheduled&#8217; = (Current Iteration)  AND &#8216;Status&#8217; > &#8216;In Analysis&#8217;  AND &#8216;Status&#8217; is not &#8216;Deleted&#8217;  AND &#8216;Status&#8217; is not &#8216;Blocked&#8217; AND &#8216;Estimate&#8217; IS NOT NULL AND &#8216;Iteration &#8211; Analysis Completed&#8217; IS NOT NULL<br \/>    labels: SELECT DISTINCT &#8216;Date Estimated&#8217;<br \/>    x-title: Date<br \/>    x-labels-start: 2010-08-10<br \/>    x-labels-end: 2010-08-21<br \/>    y-title: Estimated Scope in Story Points<br \/>    show-start-label: false<br \/>    data-point-symbol: diamond<br \/>    data-labels: true<br \/>    chart-height: 500<br \/>    chart-width: 800<br \/>    plot-height: 375<br \/>    plot-width: 500<br \/>    trend-ignore: zeroes-at-end-and-last-value <br \/>    cumulative: true<br \/>    series: <br \/>    &#8211; label: Total Scope<br \/>      color: black<br \/>      data: SELECT &#8216;Date Estimated&#8217;, SUM(&#8216;Estimate&#8217;)<br \/>    &#8211; label: Development Complete<br \/>      color: yellow<br \/>      line-width: 1<br \/>      data: SELECT &#8216;Date Dev Complete&#8217;, SUM(&#8216;Estimate&#8217;) WHERE &#8216;Status&#8217; >= &#8216;Development Complete&#8217;<br \/>    &#8211; label: QA Complete<br \/>      color: orange<br \/>      line-width: 1<br \/>      data: SELECT &#8216;Date QA Complete&#8217;, SUM(&#8216;Estimate&#8217;) WHERE &#8216;Status&#8217; >= &#8216;QA Complete&#8217;<br \/>    &#8211; label: Accepted<br \/>      color: blue<br \/>      data: SELECT &#8216;Date Accepted&#8217;, SUM(&#8216;Estimate&#8217;) WHERE &#8216;Status&#8217; >= &#8216;Accepted&#8217;<br \/>}}<br \/>{% panel-content %}<br \/>{% dashboard-panel %}<br \/>{% dashboard-panel %}\n<\/div>\n<p>\n<strong>Observations:<\/strong><\/p>\n<ul>\n<li>I had to hard code date start and date end in x-labels-start and x-labels-end but otherwise, I was able to use the project variable \u2018Iteration \u2013 Scheduled\u2019 = (Current Iteration) that&#8217;s part of the XP Template.<\/li>\n<li>Burn up is accomplished by setting cumulative:true. Unfortunately, I can&#8217;t get trend lines to work as a result.<\/li>\n<\/ul>\n<p><strong>Here&#8217;s what the result looks like:<\/strong><\/p>\n<p><a href=\"http:\/\/judykat.com\/ken-judy\/wp-content\/uploads\/public\/blogimages\/mingle-burnup-data-series-chart.png\"><img loading=\"lazy\" decoding=\"async\" alt=\"Burn up using Mingle data series chart\" src=\"http:\/\/judykat.com\/ken-judy\/wp-content\/uploads\/public\/blogimages\/mingle-burnup-data-series-chart.png\" title=\"Burn up using Mingle data series chart\" class=\"aligncenter\" width=\"550\" height=\"383\" \/><\/a><\/p>\n<p>This chart along with selected summary counts and tables allows us a real time dashboard of the health of our sprints.<\/p>\n<p>As you can tell from the burn up, we have work to do improving flow in our iterations.<\/p>\n<p>Anyway, reporting is a work in progress. As is everything.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As I&#8217;ve said before, we use Thoughtworks Studio Mingle to track our backlogs. One thing Mingle has not provided for us in the time we&#8217;ve worked with it is a daily burn up. Kind of shocking. Last month, we migrated &hellip; <a href=\"https:\/\/judykat.com\/ken-judy\/making-daily-burnup-thoughtworks-studio-mingle\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[8,30],"tags":[783,782,878,781,22],"class_list":["post-1999","post","type-post","status-publish","format-standard","hentry","category-scrum","category-software-development","tag-project-management","tag-reporting","tag-scrum","tag-thoughtworks-mingle","tag-xp"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/judykat.com\/ken-judy\/wp-json\/wp\/v2\/posts\/1999","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/judykat.com\/ken-judy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/judykat.com\/ken-judy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/judykat.com\/ken-judy\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/judykat.com\/ken-judy\/wp-json\/wp\/v2\/comments?post=1999"}],"version-history":[{"count":29,"href":"https:\/\/judykat.com\/ken-judy\/wp-json\/wp\/v2\/posts\/1999\/revisions"}],"predecessor-version":[{"id":2028,"href":"https:\/\/judykat.com\/ken-judy\/wp-json\/wp\/v2\/posts\/1999\/revisions\/2028"}],"wp:attachment":[{"href":"https:\/\/judykat.com\/ken-judy\/wp-json\/wp\/v2\/media?parent=1999"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/judykat.com\/ken-judy\/wp-json\/wp\/v2\/categories?post=1999"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/judykat.com\/ken-judy\/wp-json\/wp\/v2\/tags?post=1999"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}