{"id":44898,"date":"2015-07-27T21:15:00","date_gmt":"2015-07-27T21:15:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/visualstudioalm\/2015\/07\/27\/visual-studio-online-process-customization-update\/"},"modified":"2022-08-03T00:28:13","modified_gmt":"2022-08-03T08:28:13","slug":"visual-studio-online-process-customization-update","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/devops\/visual-studio-online-process-customization-update\/","title":{"rendered":"Visual Studio Online Process Customization &#8211; Update"},"content":{"rendered":"<p>Back <a href=\"http:\/\/blogs.msdn.com\/b\/visualstudioalm\/archive\/2015\/05\/05\/visual-studio-online-process-customization.aspx\">in May<\/a>, we began explaining our roadmap for process customization on Visual Studio Online (VSO).\u00a0 In this post, I want to share the progress we\u2019ve made and give an update on our overall plans.<\/p>\n<p><strong>Customization rollout plan<\/strong><br \/>\nProcess customization features will be delivered on the same cadence as the rest of the service, with new functionality lighting up every 2-3 sprints.\u00a0 Our plan is to deliver customization as simple scenarios that offer end-to-end experiences for managing customizations.\u00a0 To make this a bit more concrete, here is our prioritized list of scenarios we plan on delivering:<\/p>\n<ol>\n<li>Add custom fields &amp; modify layout for existing work item types<\/li>\n<li>Add picklist and identity fields to existing work item types<\/li>\n<li>Modify the state workflow on existing work item types<\/li>\n<li>Creation of custom work item types<\/li>\n<li>Define business logic and rules for custom fields<\/li>\n<li>Import\/Export of custom processes<\/li>\n<\/ol>\n<p>As Aaron mentioned in May, each of these scenarios will be enabled through simple UI built into the web product so you won\u2019t need to manually make changes to XML or work with clunky tools.\u00a0 Couple with the UI will be public REST APIs so can hook customization into your own extensions of VSO and automated processes.<\/p>\n<p><strong>Add a field<a name=\"AddField\"><\/a><\/strong><br \/>\nWhen we talk to customers about process customization, the most common ask we hear is something like this, \u201cWhy can\u2019t I add a \u2018Due date\u2019 field to the agile bug?\u201d\u00a0 At their core, work items are essentially a property bag of name\/value pairs so letting users extend this with custom name\/value pairs is essential.<\/p>\n<p>The first scenario we\u2019ll deliver is the ability to extend an existing work item in any of our \u201cout of the box\u201d processes (Agile, Scrum, CMMI) and add your own custom fields to them.\u00a0 We\u2019ll have an \u201cAdd a field\u201d experience right from the work item as well as an admin grid view of all the fields defined in a process and referenced on each work item type.<\/p>\n<p>In addition to defining the field itself, the experience will allow you to provide the most common metadata about the field:<\/p>\n<ul>\n<li>Tooltip description<\/li>\n<li>Default value for the field<\/li>\n<li>Should the field be required?<\/li>\n<\/ul>\n<table border=\"0\">\n<tbody>\n<tr>\n<td>\n        <a href=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/07\/3010.Figure1.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/07\/3010.Figure1.png\" alt=\"\" border=\"0\" \/><\/a>\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        Figure 1. An early UX mockup made with the TFS Storyboarding tool showing what the \u201cAdd a field\u201d dialog could look like.\n      <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Layout<a name=\"Layout\"><\/a><\/strong><br \/>\nAdding a field wouldn\u2019t be complete without talking about how that field appears on the work item form.\u00a0 As Aaron previously mentioned, the form is designed for readability and usability.\u00a0 Fields are shown in collapsible sections on the form and you\u2019ll be able to take control of which fields appear on the form and where.\u00a0 Coupled with the add a field UI will be a WYSIWIG layout editor where you can manage how fields appear on the form.\u00a0 When you add a new field, it will appear in a default section but you are free to drag and drop it around to where you want it to appear.<\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td>\n        <a href=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/07\/4657.NewTask.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/07\/4657.NewTask.png\" alt=\"\" border=\"0\" \/><\/a>\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        Figure 2. We have some more work ahead of us but here&#8217;s how the new form is taking shape.\n      <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Shared and Inherited Processes<a name=\"SharedInheritedProcess\"><\/a><\/strong><br \/>\nIn our previous customization blog posting, Aaron introduced the concept of shared process and inherited processes.\u00a0 These are core concepts the process customization story is based on.\u00a0 The \u201cout of the box\u201d processes (Agile, Scrum and CMMI) are not directly editable by end users \u2013 only the product team can do that <span style=\"font-family: wingdings,zapf dingbats\">J<\/span>.<\/p>\n<p>In order to add fields and customize layout, you have to create an inherited process from one of these existing processes.\u00a0 Don\u2019t worry, we\u2019ll allow you to import and export custom processes too, but as you can see from our priority list above, that\u2019s the last phase of our rollout.<\/p>\n<p>The process to create an inherited process is super simple.\u00a0 Choose the process you want to inherit from, right click it on the process page, and walk through the \u201cCreate an inherited process\u201d wizard.\u00a0 The wizard will ask you for a name and description for your inherited process and then it will allow you to optionally migrate existing projects to use it.\u00a0<\/p>\n<p>The value an inherited process brings is that it\u2019s a home for all your customization but it also inherits changes from its parent.\u00a0 For example: if VSO chooses to update the Agile template and add a \u201cBlocked\u201d field to all user stories, the inherited process \u201csuper-agile\u201d will inherit the field automatically!\u00a0 We think this a huge win for customers wanting to keep up with the latest guidance from Microsoft\u2019s processes.<\/p>\n<p>In general, there are 2 operations a user can do to an inherited process: add and hide.\u00a0 Inherited processes allow you to add a field, add groups\/fields to the form layout, add a state, add a work item type, etc.\u00a0 These are custom to the inherited process.<\/p>\n<p>Hide is best described with an example.\u00a0 The Fabrikam organization uses the process \u2018super-agile\u2019 that inherits from Agile.\u00a0 Their organization doesn\u2019t do cost breakdowns and they don\u2019t want to see the \u2018Original estimate\u2019, \u2018remaining work\u2019 and \u2018completed work\u2019 fields on their bug work item.\u00a0 In their inherited \u2018super-agile\u2019 process, they choose to hide these 3 fields from the work item form.\u00a0 Similarly, they can hide the \u2018Issue\u2019 work item type because they don\u2019t use that in their daily workflows.\u00a0<\/p>\n<p>Finally, existing projects can be easily migrated from using one of the \u201cout of the box\u201d processes to using an inherited process.\u00a0 This action is fully reversible and no data will be lost in the migration; history of the work item and query results will still show the values custom to the inherited process, but they will not be editable as the fields are no longer valid in the context of the system process.<\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td>\n<p>\n          <img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2015\/07\/3122.Figure3.png\" alt=\"\" border=\"0\" \/>\n        <\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n        \u00a0Figure 3. Super-agile is an inherited process off of the Agile process.\u00a0 One project has already been migrated to use it.\n      <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>This functionality is a couple sprints away from being deployed across the service but hopefully this gives you a sense of where we\u2019re going.\u00a0 I\u2019m excited to hear your feedback and we\u2019ll be sure to provide deeper insights into the next phases as we get closer to releasing them\u2026<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Back in May, we began explaining our roadmap for process customization on Visual Studio Online (VSO).\u00a0 In this post, I want to share the progress we\u2019ve made and give an update on our overall plans. Customization rollout plan Process customization features will be delivered on the same cadence as the rest of the service, with [&hellip;]<\/p>\n","protected":false},"author":174,"featured_media":45953,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[227,253,1],"tags":[],"class_list":["post-44898","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agile","category-azure-devops-server","category-devops"],"acf":[],"blog_post_summary":"<p>Back in May, we began explaining our roadmap for process customization on Visual Studio Online (VSO).\u00a0 In this post, I want to share the progress we\u2019ve made and give an update on our overall plans. Customization rollout plan Process customization features will be delivered on the same cadence as the rest of the service, with [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/44898","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/users\/174"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/comments?post=44898"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/44898\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media\/45953"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media?parent=44898"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/categories?post=44898"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/tags?post=44898"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}