{"id":10842,"date":"2016-01-11T12:48:00","date_gmt":"2016-01-11T12:48:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/visualstudioalm\/2016\/01\/11\/vsts-process-customization-futures-january-2016\/"},"modified":"2022-08-03T00:00:02","modified_gmt":"2022-08-03T08:00:02","slug":"vsts-process-customization-futures-january-2016","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/devops\/vsts-process-customization-futures-january-2016\/","title":{"rendered":"VSTS Process Customization futures (January 2016)"},"content":{"rendered":"<p><strong>NOTE: An <a href=\"https:\/\/devblogs.microsoft.com\/\">updated roadmap as of June 2016 <\/a>is now available.<\/strong><\/p>\n<p>Last month, we released our first major milestone for process customization &#8211; the ability to add a field and modify layout, checkout <a href=\"http:\/\/blogs.msdn.com\/b\/visualstudioalm\/archive\/2015\/12\/10\/adding-a-custom-field-to-a-work-item.aspx\" target=\"_blank\" rel=\"noopener\">my blog post<\/a> on the topic if you haven&#8217;t seen it yet.\u00a0 As I shared <a href=\"http:\/\/blogs.msdn.com\/b\/visualstudioalm\/archive\/2015\/07\/27\/visual-studio-online-process-customization-update.aspx\" target=\"_blank\" rel=\"noopener\">in July<\/a>, this was just the first scenario of our overall plan:<\/p>\n<ol>\n<li>Add custom fields &amp; modify layout for existing work item types &#8211; <span style=\"color: green\">Completed<\/span><\/li>\n<li>Add picklist and identity fields to existing work item types &#8211; <span style=\"color: green\">Partially Completed<\/span><\/li>\n<li>Modify the state workflow on existing work item types &#8211; <span style=\"color: green\">Completed<\/span><\/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>With the new year upon us, we wanted to lay out a rough timeline of when we expect to deliver the rest of these scenarios.<\/p>\n<p>NOTE: The timeline is subject to change and all the designs below are early mocks to land concepts &#8211; we have lots more UX and design work to do before completing these items.<\/p>\n<table style=\"margin-bottom: 1.5em;width: 100%;border-collapse: collapse\">\n<tbody>\n<tr style=\"border: #cccccc 1px solid\">\n<td style=\"border: 1px solid\" valign=\"top\">\n<p style=\"margin-bottom: 0px;text-align: left\">\n          <strong>Planned Date<\/strong>\n        <\/p>\n<\/td>\n<td style=\"border: 1px solid\" valign=\"top\">\n<p style=\"margin-bottom: 0px;text-align: left\">\n          <strong>Feature<\/strong>\n        <\/p>\n<\/td>\n<\/tr>\n<tr style=\"border: #cccccc 1px solid\">\n<td style=\"border: 1px solid\" valign=\"top\">\n<p style=\"margin-bottom: 0px;text-align: left\">\n          Q1 2016\n        <\/p>\n<\/td>\n<td style=\"border: 1px solid\" valign=\"top\">\n<ul>\n<li>\n            Add more field types: HTML\/multi-line string, and Boolean <span style=\"color: green\">Completed!<\/span>\n          <\/li>\n<li>\n            Add picklist fields to existing work item types <span style=\"color: green\">Completed!<\/span>\n          <\/li>\n<li>\n            Modify the state workflow on existing work item types <span style=\"color: green\">Completed!<\/span>\n          <\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr style=\"border: #cccccc 1px solid\">\n<td style=\"border: 1px solid\" valign=\"top\">\n<p style=\"margin-bottom: 0px;text-align: left\">\n          Q2 2016\n        <\/p>\n<\/td>\n<td style=\"border: 1px solid\" valign=\"top\">\n<ul>\n<li>\n            Add identity fields to existing work item types\n          <\/li>\n<li>\n            Creation of custom work item types\n          <\/li>\n<li>\n            Define business logic and rules for custom field\n          <\/li>\n<li>\n            REST API support for customization\n          <\/li>\n<li>\n            Import\/Export of custom processes\n          <\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Add more field types: HTML, multi-line string, and Boolean <span style=\"color: green\">Completed!<\/span><a name=\"MoreFields\"><\/a><\/h3>\n<p>With the add a field experience shipped, many customers have been asking us for additional field types. The most popular are HTML fields for storing rich text data about a work item and a long-time ask on User Voice, checkboxes. We&#8217;ll be adding these additional field types and they&#8217;ll show up in the add a field experience no differently from any other field type. We do have additional field types on our list but those will be longer term investments.<\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td>\n        <a href=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/0317.Figure1.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/0317.Figure1.png\" alt=\"\" border=\"0\" \/><\/a>\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        Figure 1. A new HTML field called &#8220;Design&#8221; was added to the first column and a boolean field &#8220;Ready to deploy&#8221; was added to the status section.\n      <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Add picklist fields to existing work item types <span style=\"color: green\">Completed!<\/span><a name=\"Picklist\"><\/a><\/h3>\n<p>The biggest ask since releasing add a field is how can a user add a dropdown field to the form. We call those picklists. In TFS, we have AllowedValues\/SuggestedValue\/ProhibitedValue rules as well as global lists that help provide this functionality but they\u2019re not easy to use. Instead of thinking about picklists as a set of rules, we\u2019re going to make lists a first class citizen in the system. You&#8217;ll be able to define items in a list and back a picklist field\u00a0with a\u00a0list. Longer term we&#8217;ll add the ability to order items in the list and rename them.<\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td>\n        <a href=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/2134.Figure2.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/2134.Figure2.png\" alt=\"\" border=\"0\" \/><\/a>\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        Figure 2. I&#8217;m adding a new field called &#8220;TShirt size&#8221; to my feature work item to track estimates. The field is a picklist and will appear as a dropdown on the form with the values specified in the list.\n      <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Modify the state workflow on existing work item types <span style=\"color: green\">Completed!<\/span><a name=\"States\"><\/a><\/h3>\n<p>Moving beyond fields, the next customization we want to add to work items is the ability to control the workflow or state model that work items go through. Like fields before it, states are getting a makeover and we\u2019re going to simplify the state model so that the most common scenarios are easy to accomplish while at the same time supporting the advanced scenarios enterprises have come to rely on. Like with fields, states will be stored at the process and individual work items will choose which of these available states they want to use. Adding a state will be very similar to adding a field. By default, each state will also include a pair of fields tracking when the work item was moved into that state and by whom &#8211; this is something most process administrators add so we&#8217;re going to do the heavy lifting for you. Another change is that we&#8217;re switching the model so that by default, a work item can transition between any two states freely; we&#8217;ll also allow\u00a0users to restrict individual transitions if your business processes require it but that will be optional. Looking at how states appear on the work item form, each state will have a color associated with it and the list of states will be ordered based on your chosen workflow as opposed to being alphabetized, another small rock but something customers have been requesting for a long time.<\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td>\n        <a href=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/6644.Figure3.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/6644.Figure3.png\" alt=\"\" border=\"0\" \/><\/a>\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        Figure 3. The feature work item type has five states: the four that were defined in the Agile system process and the &#8220;Prioritized&#8221; state which is custom to the &#8220;My Agile&#8221; process.\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        <a href=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/3835.Figure4.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/3835.Figure4.png\" alt=\"\" border=\"0\" \/><\/a>\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        Figure 4. Looking at the state control on the work item form, the order and colors match exactly to what was defined in the process in figure 3.\n      <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Add Identity fields to existing work item types<a name=\"Identity\"><\/a><\/h3>\n<p>Custom identity fields to track ownership, assignment, etc. are another scenario we want to enable. Like with picklists, we want to make this significantly simpler than exists today on TFS. Identity will be another field type available from the add field dialog and you&#8217;ll be able to scope the field to an existing group of users.<\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td>\n        <a href=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/8117.Figure5.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/8117.Figure5.png\" alt=\"\" border=\"0\" \/><\/a>\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        Figure 5. Adding a &#8220;PM Owner&#8221; identity field to the feature work item to track who&#8217;s responsible for the designing the feature. I can scope the field to members of the existing &#8220;PM Team&#8221; AAD group.\n      <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Creation of custom work item types<a name=\"Types\"><\/a><\/h3>\n<p>With states and fields available, we can finally allow users to create their own custom work item types.\u00a0 When you create a new work item type, it will have the initial set of system fields along with a &#8220;new&#8221; and &#8220;closed&#8221; state.\u00a0 Of course, you will have full control of these work item types and can add as many additional fields and states as you want.\u00a0 You&#8217;ll also have full control of the layout.\u00a0 Adding custom work item types is great, but what most customers really want to do is add those new work item types to the backlog.\u00a0 We&#8217;ll be introducing a new concept called behaviors which is essentially a contract between experiences and process.\u00a0 Adding a custom work item type to the backlog will be as simple as checking a checkbox.\u00a0 We&#8217;ll definitely talk a lot more about behaviors later&#8230;<\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td>\n        <a href=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/1205.Figure6.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/1205.Figure6.png\" alt=\"\" border=\"0\" \/><\/a>\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        Figure 6. Adding a new &#8220;Live site incident&#8221; work item type is as easy as giving it a name, description and color.\n      <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Define business logic and rules for custom fields<a name=\"Rules\"><\/a><\/h3>\n<p>In TFS, process administrators can use field rules to model custom business logic.\u00a0 While this is a powerful customization, maintaining the rules in XML is quite difficult and takes a TFS PHD to configure.\u00a0 This is another area we want to significantly simplify through a fit for purpose UI.\u00a0 We are looking at modeling rules through triggers and actions, similar to how service hooks work on the service today.\u00a0 In addition to wrapping this experience with a UI, we&#8217;re looking to add new triggers and actions to filter the new picklist and identity fields.<\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td>\n        <a href=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/3513.Figure7.png\"><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/devops\/wp-content\/uploads\/sites\/6\/2016\/01\/3513.Figure7.png\" alt=\"\" border=\"0\" \/><\/a>\n      <\/td>\n<\/tr>\n<tr>\n<td>\n        Figure 7. In these mockups, you can see that the user has configured a new rule by choosing a\u00a0trigger and action: when\u00a0the state changes to resolved, set the value of the &#8216;Assigned To&#8221; field to\u00a0the value of the &#8220;Created by&#8221; field.\n      <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>REST API support for customization<a name=\"RESTAPI\"><\/a><\/h3>\n<p>As I mentioned in the previous blog entries about process customization, we will be delivering granular REST APIs allowing 3rd party tools to modify process.\u00a0 Create, update, and delete operations will all be exposed as well as some advanced functionality that we don\u2019t have UI for yet.<\/p>\n<h3>Import\/Export of custom processes<a name=\"ImportExport\"><\/a><\/h3>\n<p>Once we have all the above pieces in place, we&#8217;ll bring both APIs and UI experience to allow the creation, import and export of full custom processes.\u00a0 This will allow customers with multiple accounts to copy a process from one account to another.\u00a0 This can also be used to try out process changes in a staging account before you commit them to your production account.\u00a0 We&#8217;re also looking to provide an experience to import an existing process template from TFS and have it converted on the fly to\u00a0the new process model.\u00a0 Finally, we&#8217;ll bring inheritance to custom processes so organizations can align around a common core process\u00a0but leave room for autonomy as well.<\/p>\n<div>\n  I&#8217;m excited to hear your feedback and as we deliver each item, we&#8217;ll write more in-depth blog posts and keep this page updated as we complete each of these experiences.\n<\/div>\n<div>\n  &#8211; Justin <a href=\"https:\/\/twitter.com\/justincmarks\">@justincmarks<\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>NOTE: An updated roadmap as of June 2016 is now available. Last month, we released our first major milestone for process customization &#8211; the ability to add a field and modify layout, checkout my blog post on the topic if you haven&#8217;t seen it yet.\u00a0 As I shared in July, this was just the first [&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-10842","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agile","category-azure-devops-server","category-devops"],"acf":[],"blog_post_summary":"<p>NOTE: An updated roadmap as of June 2016 is now available. Last month, we released our first major milestone for process customization &#8211; the ability to add a field and modify layout, checkout my blog post on the topic if you haven&#8217;t seen it yet.\u00a0 As I shared in July, this was just the first [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/10842","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=10842"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/10842\/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=10842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/categories?post=10842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/tags?post=10842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}