---
title: "WI customization: how to allow field editions at specific states"
description: "WI customization: how to allow field editions at specific states"
---

# WI customization: how to allow field editions at specific states

Posted by InCycle - May 31, 2009

- [**](https://www.facebook.com/sharer/sharer.php?u=https://blogs.incyclesoftware.com/2009/05/wi-customization-how-to-allow-field-editions-at-specific-states/)
- [**](https://www.linkedin.com/shareArticle?mini=true&url=https://blogs.incyclesoftware.com/2009/05/wi-customization-how-to-allow-field-editions-at-specific-states/&title=&summary=&source=)
- [**](https://twitter.com/home?status=)
- [**](mailto:?&subject=https://blogs.incyclesoftware.com/2009/05/wi-customization-how-to-allow-field-editions-at-specific-states/&body=https://blogs.incyclesoftware.com/2009/05/wi-customization-how-to-allow-field-editions-at-specific-states/)

**

![header-picture](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/woman-notebook-working-girl.png "header-picture")

I came across the following work item rule request for which the implementation is not so straight forward for those unfamiliar with tfs work item customization.

The request is to “*have a "Resolution" field on our Bug work item that is used by developers to describe the changes made to resolve the issue.  We'd like this field to be read-only for all states until the dev changes the state to "Resolved".*

To implement that you would do the following within the bug.xml (can do the same using the Process template editor that is available with the team foundation power tools).

A. In field definition you use the WhenNotChanged rule.  

```
<span style="color: #0000ff">&lt;</span><span style="color: #800000">FIELD</span> <span style="color: #ff0000">name</span><span style="color: #0000ff">=&quot;Resolution&quot;</span> <span style="color: #ff0000">refname</span><span style="color: #0000ff">=&quot;CompanyName.Common.Resolution&quot;</span> <span style="color: #ff0000">type</span><span style="color: #0000ff">=&quot;HTML&quot;</span><span style="color: #0000ff">&gt;</span> 
```

```
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">WHENNOTCHANGED</span> <span style="color: #ff0000">field</span><span style="color: #0000ff">=&quot;System.State&quot;</span><span style="color: #0000ff">&gt;</span> 
```

```
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">READONLY</span> <span style="color: #0000ff">/&gt;</span> 
```

```
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">WHENNOTCHANGED</span><span style="color: #0000ff">&gt;</span>
```

This make the will not editable except when the transition changes.

B. Do the following in each transition, except in the transition of going from "Active" to "Resolved"

```
<span style="color: #0000ff">&lt;</span><span style="color: #800000">TRANSITION</span> <span style="color: #ff0000">from</span><span style="color: #0000ff">=&quot;&quot;</span> <span style="color: #ff0000">to</span><span style="color: #0000ff">=&quot;Active&quot;</span><span style="color: #0000ff">&gt;</span> 
```

```
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">FIELDS</span><span style="color: #0000ff">&gt;</span> 
```

```
        <span style="color: #0000ff">&lt;</span><span style="color: #800000">FIELD</span> <span style="color: #ff0000">refname</span><span style="color: #0000ff">=&quot;CompanyName.Common.Resolution&quot;</span><span style="color: #0000ff">&gt;</span> 
```

```
            <span style="color: #0000ff">&lt;</span><span style="color: #800000">READONLY</span> <span style="color: #0000ff">/&gt;</span> 
```

```
       <span style="color: #0000ff">&lt;/</span><span style="color: #800000">FIELD</span><span style="color: #0000ff">&gt;</span> 
```

```
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">FIELDS</span><span style="color: #0000ff">&gt;</span> 
```

```
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">TRANSITION</span><span style="color: #0000ff">&gt;</span> 
```

```
...
```

```
<span style="color: #0000ff">&lt;</span><span style="color: #800000">TRANSITION</span> <span style="color: #ff0000">from</span><span style="color: #0000ff">=&quot;Resolved&quot;</span> <span style="color: #ff0000">to</span><span style="color: #0000ff">=&quot;Closed&quot;</span><span style="color: #0000ff">&gt;</span> 
```

```
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">FIELDS</span><span style="color: #0000ff">&gt;</span> 
```

```
        <span style="color: #0000ff">&lt;</span><span style="color: #800000">FIELD</span> <span style="color: #ff0000">refname</span><span style="color: #0000ff">=&quot;CompanyName.Common.Resolution&quot;</span><span style="color: #0000ff">&gt;</span> 
```

```
            <span style="color: #0000ff">&lt;</span><span style="color: #800000">READONLY</span> <span style="color: #0000ff">/&gt;</span> 
```

```
        <span style="color: #0000ff">&lt;/</span><span style="color: #800000">FIELD</span><span style="color: #0000ff">&gt;</span> 
```

```
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">FIELDS</span><span style="color: #0000ff">&gt;</span> 
```

```
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">TRANSITION</span><span style="color: #0000ff">&gt;</span> 
```

C. In Resolved transition would want to make the field required

 

```
<span style="color: #0000ff">&lt;</span><span style="color: #800000">TRANSITION</span> <span style="color: #ff0000">from</span><span style="color: #0000ff">=&quot;Active&quot;</span> <span style="color: #ff0000">to</span><span style="color: #0000ff">=&quot;Resolved&quot;</span><span style="color: #0000ff">&gt;</span> 
```

```
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">FIELDS</span><span style="color: #0000ff">&gt;</span> 
```

```
        <span style="color: #0000ff">&lt;</span><span style="color: #800000">FIELD</span> <span style="color: #ff0000">refname</span><span style="color: #0000ff">=&quot;CompanyName.Common.Resolution&quot;</span><span style="color: #0000ff">&gt;</span> 
```

```
            <span style="color: #0000ff">&lt;</span><span style="color: #800000">REQUIRED</span> <span style="color: #0000ff">/&gt;</span> 
```

```
        <span style="color: #0000ff">&lt;/</span><span style="color: #800000">FIELD</span><span style="color: #0000ff">&gt;</span> 
```

```
    <span style="color: #0000ff">&lt;/</span><span style="color: #800000">FIELDS</span><span style="color: #0000ff">&gt;</span> 
```

```
<span style="color: #0000ff">&lt;/</span><span style="color: #800000">TRANSITION</span><span style="color: #0000ff">&gt;</span> 
```

D. You will probably want to add a Team project security group that would allow some power users will to be able to edit the value. At a minimum you would do this in the Field rule.

Example:

```
    <span style="color: #0000ff">&lt;</span><span style="color: #800000">READONLY</span> <span style="color: #ff0000">not</span><span style="color: #0000ff">=&quot;[Project]\Project Administrators&quot;</span> <span style="color: #0000ff">/&gt;</span>
```

The WhenNotChanged rules is well explained on [MSDN](http://msdn.microsoft.com/en-us/library/aa337620.aspx) 

As a side note, for some creative usage of work item rules engine, I recommend reading the series of posts from the [WIT Tools blog](http://blogs.msdn.com/teams_wit_tools/archive/2009/04/24/work-item-rules-workaround-cannot-close-task-unless-remaining-work-is-zero.aspx)

Also to finalize my commentary, from an ALM point of view, I am not a great fan of putting field to read only (or putting  group security to restrict edition of some field for that matter). Isn't preferable to empower all the members on the team and making them responsible to follow the agreed upon process. You can also easily track changes through the work item history or set specific TFS work item alert so investigate when the process might not be followed properly. But I understand that in certain organization cultures this type of implementation is necessary.

Bertrand

 Topics: [Blog](https://blogs.incyclesoftware.com/topic/blog)

---

### Recent Posts

By InCycle - 31 May, 2009

#### InCycle Wins Prestigious Microsoft Global Partner of the Year Award

[![read more](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/arrow-recent-blog-post.png "read more")](https://blogs.incyclesoftware.com/incycle-wins-prestigious-microsoft-global-partner-of-the-year-award)

By InCycle - 31 May, 2009

#### Top 5 Questions On Elevate for App Modernization

[![read more](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/arrow-recent-blog-post.png "read more")](https://blogs.incyclesoftware.com/top-five-questions-on-elevate-for-app-modernization)

By InCycle - 31 May, 2009

#### GitHub Universe 2025 Top Announcements

[![read more](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/arrow-recent-blog-post.png "read more")](https://blogs.incyclesoftware.com/github-universe-2025-top-announcements)

---

### Subscribe to Blog

### ![2025 Microsoft Partner of the Year Winner: InCycle Software](https://blogs.incyclesoftware.com/hs-fs/hubfs/InCycle%202025%20Microsoft%20PoY%20Badge.png?width=377&height=223&name=InCycle%202025%20Microsoft%20PoY%20Badge.png)

### About this blog

Since 2002, InCycle has been providing challenging thought leadership to help customers successfully combine modern application designs, IT platforms and DevOps practices to achieve new levels of success. As a leader in app modernization, these blogs are written by our expert consultants and provide useful information to help on your journey to the cloud and better software. Happy reading!

### Platform Engineering Webinar on Demand

PE deep dive and demo!

[![Learn More!](https://no-cache.hubspot.com/cta/default/707613/aae0556f-2d26-4ce4-9b32-e7bebd443c9a.png)](https://cta-redirect.hubspot.com/cta/redirect/707613/aae0556f-2d26-4ce4-9b32-e7bebd443c9a)

### Recent Posts

### Migrating to GitHub?

Start with a GitHub Migration Strategy and Roadmap (at no cost!)

[![Learn More!](https://no-cache.hubspot.com/cta/default/707613/312dc03f-1f78-4907-aaaf-3c0aa3cccd8f.png)](https://cta-redirect.hubspot.com/cta/redirect/707613/312dc03f-1f78-4907-aaaf-3c0aa3cccd8f)

### Posts by Topic

- [Blog (194)](https://blogs.incyclesoftware.com/topic/blog)
- [Video (32)](https://blogs.incyclesoftware.com/topic/video)
- [Azure (25)](https://blogs.incyclesoftware.com/topic/azure)
- [DevOps (20)](https://blogs.incyclesoftware.com/topic/devops)
- [GitHub (13)](https://blogs.incyclesoftware.com/topic/github)
- [InRelease (12)](https://blogs.incyclesoftware.com/topic/inrelease)
- [Containers (11)](https://blogs.incyclesoftware.com/topic/containers)
- [release management (11)](https://blogs.incyclesoftware.com/topic/release-management)
- [AKS (10)](https://blogs.incyclesoftware.com/topic/aks)
- [CI/CD (10)](https://blogs.incyclesoftware.com/topic/ci-cd)
- [Kubernetes (10)](https://blogs.incyclesoftware.com/topic/kubernetes)
- [Azure DevOps (9)](https://blogs.incyclesoftware.com/topic/azure-devops)
- [Migration (9)](https://blogs.incyclesoftware.com/topic/migration)
- [Platform Engineering (PE) (9)](https://blogs.incyclesoftware.com/topic/platform-engineering-pe)
- [GenAI (8)](https://blogs.incyclesoftware.com/topic/genai)
- [Microsoft Azure (8)](https://blogs.incyclesoftware.com/topic/microsoft-azure)
- [Visual Studio (8)](https://blogs.incyclesoftware.com/topic/visual-studio)
- [tfs (8)](https://blogs.incyclesoftware.com/topic/tfs)
- [Awards (7)](https://blogs.incyclesoftware.com/topic/awards)
- [Big Data (6)](https://blogs.incyclesoftware.com/topic/big-data)
- [Innovation (6)](https://blogs.incyclesoftware.com/topic/innovation)
- [Microsoft (6)](https://blogs.incyclesoftware.com/topic/microsoft)
- [agile (6)](https://blogs.incyclesoftware.com/topic/agile)
- [vsts (6)](https://blogs.incyclesoftware.com/topic/vsts)
- [Data (5)](https://blogs.incyclesoftware.com/topic/data)
- [Modernization (5)](https://blogs.incyclesoftware.com/topic/modernization)
- [App Modernization (4)](https://blogs.incyclesoftware.com/topic/app-modernization)
- [Automated Testing (4)](https://blogs.incyclesoftware.com/topic/automated-testing)
- [Data & AI (4)](https://blogs.incyclesoftware.com/topic/data-ai)
- [Event (4)](https://blogs.incyclesoftware.com/topic/event)
- [MLOps (4)](https://blogs.incyclesoftware.com/topic/mlops)
- [Modern Apps (4)](https://blogs.incyclesoftware.com/topic/modern-apps)
- [Visual Studio 2017 (4)](https://blogs.incyclesoftware.com/topic/visual-studio-2017)
- [DevTest (3)](https://blogs.incyclesoftware.com/topic/devtest)
- [Events (3)](https://blogs.incyclesoftware.com/topic/events)
- [Governance (3)](https://blogs.incyclesoftware.com/topic/governance)
- [VSO (3)](https://blogs.incyclesoftware.com/topic/vso)
- [Data Analytics (2)](https://blogs.incyclesoftware.com/topic/data-analytics)
- [Docker (2)](https://blogs.incyclesoftware.com/topic/docker)
- [Integration (2)](https://blogs.incyclesoftware.com/topic/integration)
- [Microsoft Connect (2)](https://blogs.incyclesoftware.com/topic/microsoft-connect)
- [Mobile Development (2)](https://blogs.incyclesoftware.com/topic/mobile-development)
- [RM (2)](https://blogs.incyclesoftware.com/topic/rm)
- [SQL (2)](https://blogs.incyclesoftware.com/topic/sql)
- [SaaS (2)](https://blogs.incyclesoftware.com/topic/saas)
- [TFS 15 Preview (2)](https://blogs.incyclesoftware.com/topic/tfs-15-preview)
- [TFS 2017 (2)](https://blogs.incyclesoftware.com/topic/tfs-2017)
- [Uncategorized (2)](https://blogs.incyclesoftware.com/topic/uncategorized)
- [Visual Studio 2015 (2)](https://blogs.incyclesoftware.com/topic/visual-studio-2015)
- [Xamarin (2)](https://blogs.incyclesoftware.com/topic/xamarin)
- [ADX (1)](https://blogs.incyclesoftware.com/topic/adx)
- [AI (1)](https://blogs.incyclesoftware.com/topic/ai)
- [Android (1)](https://blogs.incyclesoftware.com/topic/android)
- [Application Monitoring (1)](https://blogs.incyclesoftware.com/topic/application-monitoring)
- [Apps (1)](https://blogs.incyclesoftware.com/topic/apps)
- [BI (1)](https://blogs.incyclesoftware.com/topic/bi)
- [Brian Harry (1)](https://blogs.incyclesoftware.com/topic/brian-harry)
- [Cloud Azure (1)](https://blogs.incyclesoftware.com/topic/cloud-azure)
- [Cloud Services (1)](https://blogs.incyclesoftware.com/topic/cloud-services)
- [Connect (1)](https://blogs.incyclesoftware.com/topic/connect)
- [Connect 2016 (1)](https://blogs.incyclesoftware.com/topic/connect-2016)
- [Consultants (1)](https://blogs.incyclesoftware.com/topic/consultants)
- [Cosmos DB (1)](https://blogs.incyclesoftware.com/topic/cosmos-db)
- [Data Center (1)](https://blogs.incyclesoftware.com/topic/data-center)
- [Development (1)](https://blogs.incyclesoftware.com/topic/development)
- [EA (1)](https://blogs.incyclesoftware.com/topic/ea)
- [Git (1)](https://blogs.incyclesoftware.com/topic/git)
- [Hybrid (1)](https://blogs.incyclesoftware.com/topic/hybrid)
- [IntelliTes (1)](https://blogs.incyclesoftware.com/topic/intellites)
- [IntelliTest (1)](https://blogs.incyclesoftware.com/topic/intellitest)
- [Lab Management (1)](https://blogs.incyclesoftware.com/topic/lab-management)
- [Live Unit Testing (1)](https://blogs.incyclesoftware.com/topic/live-unit-testing)
- [Load Testing (1)](https://blogs.incyclesoftware.com/topic/load-testing)
- [MSDN (1)](https://blogs.incyclesoftware.com/topic/msdn)
- [MSTest (1)](https://blogs.incyclesoftware.com/topic/mstest)
- [MTM (1)](https://blogs.incyclesoftware.com/topic/mtm)
- [Machine Learning (1)](https://blogs.incyclesoftware.com/topic/machine-learning)
- [Media & Entertainment (1)](https://blogs.incyclesoftware.com/topic/media-entertainment)
- [Microsoft Visual Studio (1)](https://blogs.incyclesoftware.com/topic/microsoft-visual-studio)
- [Microsoft nationally managed partner (1)](https://blogs.incyclesoftware.com/topic/microsoft-nationally-managed-partner)
- [NUnit (1)](https://blogs.incyclesoftware.com/topic/nunit)
- [OpsHub (1)](https://blogs.incyclesoftware.com/topic/opshub)
- [PaaS (1)](https://blogs.incyclesoftware.com/topic/paas)
- [Pipelines (1)](https://blogs.incyclesoftware.com/topic/pipelines)
- [PowerShell (1)](https://blogs.incyclesoftware.com/topic/powershell)
- [Principles and Practices of DevOps (1)](https://blogs.incyclesoftware.com/topic/principles-and-practices-of-devops)
- [Programs (1)](https://blogs.incyclesoftware.com/topic/programs)
- [RC (1)](https://blogs.incyclesoftware.com/topic/rc)
- [Release Candidate (1)](https://blogs.incyclesoftware.com/topic/release-candidate)
- [SQL Databases (1)](https://blogs.incyclesoftware.com/topic/sql-databases)
- [SQL server (1)](https://blogs.incyclesoftware.com/topic/sql-server)
- [SSDT (1)](https://blogs.incyclesoftware.com/topic/ssdt)
- [Software (1)](https://blogs.incyclesoftware.com/topic/software)
- [Subscription & Billing Management (1)](https://blogs.incyclesoftware.com/topic/subscription-billing-management)
- [TFS 15 (1)](https://blogs.incyclesoftware.com/topic/tfs-15)
- [TFS 2015 update (1)](https://blogs.incyclesoftware.com/topic/tfs-2015-update)
- [TFS 2016 (1)](https://blogs.incyclesoftware.com/topic/tfs-2016)
- [TFS ALM (1)](https://blogs.incyclesoftware.com/topic/tfs-alm)
- [TestMethods (1)](https://blogs.incyclesoftware.com/topic/testmethods)
- [UI (1)](https://blogs.incyclesoftware.com/topic/ui)
- [UX (1)](https://blogs.incyclesoftware.com/topic/ux)
- [VS2017 (1)](https://blogs.incyclesoftware.com/topic/vs2017)
- [Validation (1)](https://blogs.incyclesoftware.com/topic/validation)
- [Virtual Machines (1)](https://blogs.incyclesoftware.com/topic/virtual-machines)
- [WPC 2016 (1)](https://blogs.incyclesoftware.com/topic/wpc-2016)
- [Web (1)](https://blogs.incyclesoftware.com/topic/web)
- [Windows (1)](https://blogs.incyclesoftware.com/topic/windows)
- [World Partner Conference (1)](https://blogs.incyclesoftware.com/topic/world-partner-conference)
- [XUnit (1)](https://blogs.incyclesoftware.com/topic/xunit)
- [alm (1)](https://blogs.incyclesoftware.com/topic/alm)
- [automation (1)](https://blogs.incyclesoftware.com/topic/automation)
- [build (1)](https://blogs.incyclesoftware.com/topic/build)
- [code (1)](https://blogs.incyclesoftware.com/topic/code)
- [nationally managed partner (1)](https://blogs.incyclesoftware.com/topic/nationally-managed-partner)
- [sql server 2008 (1)](https://blogs.incyclesoftware.com/topic/sql-server-2008)
- [unit testing (1)](https://blogs.incyclesoftware.com/topic/unit-testing)
- [vm (1)](https://blogs.incyclesoftware.com/topic/vm)

[see all](https://blogs.incyclesoftware.com/2009/05/wi-customization-how-to-allow-field-editions-at-specific-states/#)

### Blog Archive

- [November 2012 (17)](https://blogs.incyclesoftware.com/archive/2012/11)
- [September 2025 (14)](https://blogs.incyclesoftware.com/archive/2025/09)
- [October 2014 (12)](https://blogs.incyclesoftware.com/archive/2014/10)
- [July 2012 (10)](https://blogs.incyclesoftware.com/archive/2012/07)
- [October 2012 (9)](https://blogs.incyclesoftware.com/archive/2012/10)

- [**](https://twitter.com/incyclesoftware?lang=en)
- [**](https://ca.linkedin.com/company/incycle-software)
- [**](https://www.facebook.com/InCycleSoftware/)

### About us

At InCycle, we believe there is always a better way and today, that includes the cloud.

[![InCycle Microsoft Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/Incycle%202017%20website%20resources/logo-InCycle-New-white.png?width=200&name=logo-InCycle-New-white.png "InCycle Microsoft Partner")](https://www.incyclesoftware.com/)

### Learn more

- [Why Incycle?](https://www.incyclesoftware.com/why-incycle)
- [Success Stories](https://www.incyclesoftware.com/customer-success-stories)
- [Events](https://www.incyclesoftware.com/events)
- [Careers](https://www.incyclesoftware.com/careers)
- [About](https://www.incyclesoftware.com/about-incycle-software)

 

### 1-800-565-0510 [info@incyclesoftware.com](mailto:info@incyclesoftware.com) 

### ![Microsoft GitHub Verified Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/GitHub%20Verified%20Partner%20-%20white-SQUARE.png?width=256&height=57&name=GitHub%20Verified%20Partner%20-%20white-SQUARE.png) ![Data & AI Solutions Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/Data%20%26%20AI%20Solutions%20Partner.png?width=125&height=144&name=Data%20%26%20AI%20Solutions%20Partner.png) ![Digital & App Innovation Solutions Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/Digital%20%26%20App%20Innovation%20Solutions%20Partner.png?width=125&height=144&name=Digital%20%26%20App%20Innovation%20Solutions%20Partner.png)

 

© 2025 InCycle Software

[Privacy policy](https://www.incyclesoftware.com/privacy)

**

![](https://px.ads.linkedin.com/collect/?pid=302756&fmt=gif) ![](https://px.ads.linkedin.com/collect/?pid=302756&fmt=gif)

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "InCycle",
    "url" : "https://blogs.incyclesoftware.com/author/incycle"
  },
  "datePublished" : "2009-05-31T11:37:54.000Z",
  "headline" : "WI customization: how to allow field editions at specific states",
  "mainEntityOfPage" : {
    "@id" : "https://blogs.incyclesoftware.com/2009/05/wi-customization-how-to-allow-field-editions-at-specific-states/",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://blogs.incyclesoftware.com/hubfs/logo-InCycle-New-Blue---transparent.png"
    },
    "name" : "InCycle Software Inc."
  }
}
```