I am trying to add additional columns to the "Links" page as highlighted in yellow, but can't seem to figure out how to do so. The request is to add columns to show "Assigned To" and "Remaining Work".
I've looked over and attempted following the information here with no luck: LinksControlOptions XML elements
Links Page - TFS 2018
I've tried on my side and found your can't customize the default links columns, a workaround is creating a new page between <WebLayout> and </WebLayout> as the following sample in your work item type definition and add <Column Name="FieldRefName" /> that you want to shows there:
<FORM>
<WebLayout>
<Page Label="Links" LayoutMode="FirstColumnWide">
<Section>
<Group Label="links">
<Control Type="LinksControl" Name="links">
<LinksControlOptions>
<LinkFilters>
<WorkItemLinkFilter Type="System.LinkTypes.Duplicate-Reverse" />
<WorkItemLinkFilter Type="System.LinkTypes.Hierarchy-Reverse" />
<WorkItemLinkFilter Type="Microsoft.VSTS.Common.TestedBy-Reverse" />
<WorkItemLinkFilter Type="Microsoft.VSTS.Common.TestedBy-Forward" />
<WorkItemLinkFilter Type="System.LinkTypes.Hierarchy-Forward" />
<WorkItemLinkFilter Type="System.LinkTypes.Duplicate-Forward" />
<WorkItemLinkFilter Type="System.LinkTypes.Dependency" />
<WorkItemLinkFilter Type="System.LinkTypes.Related" />
</LinkFilters>
<Columns>
<Column Name="System.State" />
<Column Name="System.ChangedDate" />
<Column Name="System.Links.Comment" />
<Column Name="System.AssignedTo" />
<Column Name="System.IterationPath" />
</Columns>
</LinksControlOptions>
</Control>
</Group>
</Section>
</Page>
</WebLayout>
</FORM>
Related
We recently upgraded our TFS 2012 on premise server to TFS 2018.2. Things are mostly working but any project that had custom state/transitions will cause an error when trying to open the Backlogs page. The issue it is complaining about is related to Bugs. We replaced a "Complete" state with a state of Closed.
The error I get is :
TF400917: The current configuration is not valid for this feature. This feature cannot be used until you correct the configuration.
Learn about how to correct your configuration
Details about the validation error appear below:
The following element contains an error: RequirementBacklog/States. TF401098: This element defines the states for work items that appear on your backlog. The state configuration is incorrect. Each work item on this backlog must have one state with the type 'Complete'. The following work item type does not have any state with the type 'Complete': Bug.
Steps I have tried:
1) Using TFS Process Template editor in VS, I have change the Closed state to Complete. No success.
2) I have attempted to export the processconfig using witadmin. The file I get does not have any bug section at all. So using examples online, I attempt to add it but it complains about other sections in the file being incomplete. On a side note, if I export the process config and then immediately try to import it, it fails complaining about singleName not specified and other issues. I will attach the file I get when I export the file if it helps.
<?xml version="1.0" encoding="utf-8"?>
<ProjectProcessConfiguration>
<FeedbackRequestWorkItems category="Microsoft.FeedbackRequestCategory" pluralName="Feedback Requests">
<States>
<State type="InProgress" value="Active" />
<State type="Complete" value="Closed" />
</States>
</FeedbackRequestWorkItems>
<FeedbackResponseWorkItems category="Microsoft.FeedbackResponseCategory" pluralName="Feedback Responses">
<States>
<State type="InProgress" value="Active" />
<State type="Complete" value="Closed" />
</States>
</FeedbackResponseWorkItems>
<RequirementBacklog category="Microsoft.RequirementCategory" pluralName="Backlog items" workItemCountLimit="500">
<AddPanel>
<Fields>
<Field refname="System.Title" />
</Fields>
</AddPanel>
<Columns>
<Column width="400" refname="System.Title" />
<Column width="100" refname="System.State" />
<Column width="50" refname="Microsoft.VSTS.Scheduling.Effort" />
<Column width="200" refname="System.IterationPath" />
<Column width="200" refname="System.Tags" />
</Columns>
<States>
<State type="Proposed" value="New" />
<State type="Proposed" value="Approved" />
<State type="InProgress" value="Committed" />
<State type="Complete" value="Done" />
</States>
</RequirementBacklog>
<TaskBacklog category="Microsoft.TaskCategory" workItemCountLimit="500">
<AddPanel />
<Columns>
<Column width="50" refname="Microsoft.VSTS.Scheduling.Effort" />
<Column width="400" refname="System.Title" />
<Column width="100" refname="System.State" />
<Column width="100" refname="System.AssignedTo" />
<Column width="50" refname="Microsoft.VSTS.Scheduling.RemainingWork" />
</Columns>
<States>
<State type="Proposed" value="To Do" />
<State type="InProgress" value="In Progress" />
<State type="Complete" value="Done" />
</States>
</TaskBacklog>
<TypeFields>
<TypeField refname="Microsoft.VSTS.Common.Activity" type="Activity" />
<TypeField refname="Microsoft.VSTS.Common.BacklogPriority" type="Order" />
<TypeField refname="Microsoft.VSTS.Feedback.ApplicationLaunchInstructions" type="ApplicationLaunchInstructions" />
<TypeField refname="Microsoft.VSTS.Feedback.ApplicationStartInformation" type="ApplicationStartInformation" />
<TypeField refname="Microsoft.VSTS.Feedback.ApplicationType" type="ApplicationType">
<TypeFieldValues>
<TypeFieldValue type="ClientApp" value="Client application" />
<TypeFieldValue type="RemoteMachine" value="Remote machine" />
<TypeFieldValue type="WebApp" value="Web application" />
</TypeFieldValues>
</TypeField>
<TypeField refname="Microsoft.VSTS.Scheduling.Effort" type="Effort" />
<TypeField format="{0} h" refname="Microsoft.VSTS.Scheduling.RemainingWork" type="RemainingWork" />
<TypeField refname="System.AreaPath" type="Team" />
</TypeFields>
<Weekends>
<DayOfWeek>Sunday</DayOfWeek>
<DayOfWeek>Saturday</DayOfWeek>
</Weekends>
<Properties>
<Property name="BugsBehavior" value="Off" />
</Properties>
</ProjectProcessConfiguration>
I am new to the 2018 world and can't seem to solve this issue any suggestions would be helpful.
Adding my bug work item definition:
<?xml version="1.0" encoding="utf-8"?>
<witd:WITD application="Work item type editor" version="1.0" xmlns:witd="http://schemas.microsoft.com/VisualStudio/2008/workitemtracking/typedef">
<WORKITEMTYPE name="Bug">
<DESCRIPTION>Describes a divergence between required and actual behavior, and tracks the work done to correct the defect and verify the correction.</DESCRIPTION>
<FIELDS>
<FIELD name="Iteration Path" refname="System.IterationPath" type="TreePath" reportable="dimension" />
<FIELD name="Iteration ID" refname="System.IterationId" type="Integer" />
<FIELD name="External Link Count" refname="System.ExternalLinkCount" type="Integer" />
<FIELD name="Team Project" refname="System.TeamProject" type="String" reportable="dimension" />
<FIELD name="Hyperlink Count" refname="System.HyperLinkCount" type="Integer" />
<FIELD name="Attached File Count" refname="System.AttachedFileCount" type="Integer" />
<FIELD name="Node Name" refname="System.NodeName" type="String" />
<FIELD name="Area Path" refname="System.AreaPath" type="TreePath" reportable="dimension" />
<FIELD name="Revised Date" refname="System.RevisedDate" type="DateTime" reportable="detail" />
<FIELD name="Changed Date" refname="System.ChangedDate" type="DateTime" reportable="dimension" />
<FIELD name="ID" refname="System.Id" type="Integer" reportable="dimension" />
<FIELD name="Area ID" refname="System.AreaId" type="Integer" />
<FIELD name="Authorized As" refname="System.AuthorizedAs" type="String" syncnamechanges="true" />
<FIELD name="Title" refname="System.Title" type="String" reportable="dimension">
<REQUIRED />
</FIELD>
<FIELD name="State" refname="System.State" type="String" reportable="dimension" />
<FIELD name="Authorized Date" refname="System.AuthorizedDate" type="DateTime" />
<FIELD name="Watermark" refname="System.Watermark" type="Integer" />
<FIELD name="Rev" refname="System.Rev" type="Integer" reportable="dimension" />
<FIELD name="Changed By" refname="System.ChangedBy" type="String" syncnamechanges="true" reportable="dimension" />
<FIELD name="Reason" refname="System.Reason" type="String" reportable="dimension" />
<FIELD name="Assigned To" refname="System.AssignedTo" type="String" syncnamechanges="true" reportable="dimension">
<ALLOWEXISTINGVALUE />
<VALIDUSER />
</FIELD>
<FIELD name="Work Item Type" refname="System.WorkItemType" type="String" reportable="dimension" />
<FIELD name="Created Date" refname="System.CreatedDate" type="DateTime" reportable="dimension" />
<FIELD name="Created By" refname="System.CreatedBy" type="String" syncnamechanges="true" reportable="dimension" />
<FIELD name="Description" refname="System.Description" type="HTML" />
<FIELD name="History" refname="System.History" type="History" />
<FIELD name="Related Link Count" refname="System.RelatedLinkCount" type="Integer" />
<FIELD name="Tags" refname="System.Tags" type="PlainText" />
<FIELD name="Board Column" refname="System.BoardColumn" type="String" reportable="dimension" />
<FIELD name="Board Column Done" refname="System.BoardColumnDone" type="Boolean" reportable="dimension" />
<FIELD name="Board Lane" refname="System.BoardLane" type="String" reportable="dimension" />
<FIELD name="Remaining Work" refname="Microsoft.VSTS.Scheduling.RemainingWork" type="Double" reportable="measure" formula="sum" />
<FIELD name="Backlog Priority" refname="Microsoft.VSTS.Common.BacklogPriority" type="Double" reportable="detail" />
<FIELD name="Integration Build" refname="Microsoft.VSTS.Build.IntegrationBuild" type="String" reportable="dimension">
<SUGGESTEDVALUES expanditems="true">
<LISTITEM value="<None>" />
</SUGGESTEDVALUES>
<SUGGESTEDVALUES expanditems="true" filteritems="excludegroups">
<GLOBALLIST name="Builds - WHCRT" />
</SUGGESTEDVALUES>
</FIELD>
<FIELD name="Closed Date" refname="Microsoft.VSTS.Common.ClosedDate" type="DateTime" reportable="dimension">
<WHENNOTCHANGED field="System.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>
<FIELD name="System Info" refname="Microsoft.VSTS.TCM.SystemInfo" type="HTML" />
<FIELD name="Repro Steps" refname="Microsoft.VSTS.TCM.ReproSteps" type="HTML" />
<FIELD name="Effort" refname="Microsoft.VSTS.Scheduling.Effort" type="Double" reportable="measure" formula="sum" />
<FIELD name="Acceptance Criteria" refname="Microsoft.VSTS.Common.AcceptanceCriteria" type="HTML" />
<FIELD name="Severity" refname="Microsoft.VSTS.Common.Severity" type="String" reportable="dimension">
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="1 - Critical" />
<LISTITEM value="2 - High" />
<LISTITEM value="3 - Medium" />
<LISTITEM value="4 - Low" />
</ALLOWEDVALUES>
<DEFAULT from="value" value="3 - Medium" />
</FIELD>
<FIELD name="Found In" refname="Microsoft.VSTS.Build.FoundIn" type="String" reportable="dimension">
<SUGGESTEDVALUES expanditems="true">
<LISTITEM value="<None>" />
</SUGGESTEDVALUES>
<SUGGESTEDVALUES expanditems="true" filteritems="excludegroups">
<GLOBALLIST name="Builds - WHCRT" />
</SUGGESTEDVALUES>
</FIELD>
</FIELDS>
<WORKFLOW>
<STATES>
<STATE value="Closed" />
<STATE value="In Progress" />
<STATE value="In-Progress - QA" />
<STATE value="New">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY />
</FIELD>
</FIELDS>
</STATE>
<STATE value="QA Failed" />
<STATE value="Ready For QA" />
</STATES>
<TRANSITIONS>
<TRANSITION from="" to="New">
<REASONS>
<DEFAULTREASON value="New defect reported" />
<REASON value="Build Failure" />
</REASONS>
</TRANSITION>
<TRANSITION from="In-Progress - QA" to="QA Failed">
<REASONS>
<DEFAULTREASON value="Bug not resolved, see Notes" />
</REASONS>
<FIELDS>
<FIELD refname="System.AssignedTo">
<ALLOWEXISTINGVALUE />
<EMPTY />
</FIELD>
</FIELDS>
</TRANSITION>
<TRANSITION from="Ready For QA" to="In-Progress - QA">
<REASONS>
<DEFAULTREASON value="Testing Bug" />
</REASONS>
<FIELDS>
<FIELD refname="System.AssignedTo">
<COPY from="currentuser" />
</FIELD>
</FIELDS>
</TRANSITION>
<TRANSITION from="In-Progress - QA" to="Closed">
<REASONS>
<DEFAULTREASON value="Fix verified">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<COPY from="clock" />
</FIELD>
</FIELDS>
</DEFAULTREASON>
<REASON value="Confirmed not a bug">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<COPY from="clock" />
</FIELD>
</FIELDS>
</REASON>
</REASONS>
</TRANSITION>
<TRANSITION from="New" to="Closed">
<REASONS>
<DEFAULTREASON value="Not a Bug">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<COPY from="clock" />
</FIELD>
</FIELDS>
</DEFAULTREASON>
<REASON value="Old System - Closing bug">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<COPY from="clock" />
</FIELD>
</FIELDS>
</REASON>
<REASON value="Oops - Duplicate" />
</REASONS>
</TRANSITION>
<TRANSITION from="In-Progress - QA" to="Ready For QA">
<REASONS>
<DEFAULTREASON value="Unable to Test for now">
<FIELDS>
<FIELD refname="System.AssignedTo">
<ALLOWEXISTINGVALUE />
<EMPTY />
</FIELD>
</FIELDS>
</DEFAULTREASON>
</REASONS>
</TRANSITION>
<TRANSITION from="Closed" to="New">
<REASONS>
<DEFAULTREASON value="Re-Open Bug">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY />
</FIELD>
</FIELDS>
</DEFAULTREASON>
</REASONS>
</TRANSITION>
<TRANSITION from="In Progress" to="Closed">
<REASONS>
<DEFAULTREASON value="Invalid Bug - Verified with Business">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<COPY from="clock" />
</FIELD>
</FIELDS>
</DEFAULTREASON>
</REASONS>
</TRANSITION>
<TRANSITION from="In Progress" to="New">
<REASONS>
<DEFAULTREASON value="Moved back to New">
<FIELDS>
<FIELD refname="System.AssignedTo">
<ALLOWEXISTINGVALUE />
<EMPTY />
</FIELD>
</FIELDS>
</DEFAULTREASON>
</REASONS>
</TRANSITION>
<TRANSITION from="New" to="In Progress">
<REASONS>
<DEFAULTREASON value="Dev working bug">
<FIELDS>
<FIELD refname="System.AssignedTo">
<COPY from="currentuser" />
</FIELD>
</FIELDS>
</DEFAULTREASON>
</REASONS>
</TRANSITION>
<TRANSITION from="QA Failed" to="In Progress">
<REASONS>
<DEFAULTREASON value="Dev working bug">
<FIELDS>
<FIELD refname="System.AssignedTo">
<COPY from="currentuser" />
</FIELD>
</FIELDS>
</DEFAULTREASON>
</REASONS>
</TRANSITION>
<TRANSITION from="In Progress" to="Ready For QA">
<REASONS>
<DEFAULTREASON value="Issue Fixed, Ready for QA" />
<REASON value="Can't Reproduce" />
<REASON value="Not a Bug, won't fix" />
</REASONS>
<FIELDS>
<FIELD refname="System.AssignedTo">
<ALLOWEXISTINGVALUE />
<EMPTY />
</FIELD>
</FIELDS>
</TRANSITION>
</TRANSITIONS>
</WORKFLOW>
<FORM>
<Layout HideControlBorders="true" HideReadOnlyEmptyFields="true">
<Group Margin="(4,0,0,0)">
<Column PercentWidth="100">
<Control FieldName="System.Title" Type="FieldControl" LabelPosition="Top" ControlFontSize="large" EmptyText="<Enter title here>" />
</Column>
</Group>
<Group Margin="(10,0,0,0)">
<Column PercentWidth="100">
<Control FieldName="System.IterationPath" Type="WorkItemClassificationControl" Label="Ite&ration" LabelPosition="Left" />
</Column>
</Group>
<Group Margin="(10,0,0,0)">
<Column PercentWidth="50">
<Group Label="Status">
<Column PercentWidth="100">
<Control FieldName="System.AssignedTo" Type="FieldControl" Label="Assi&gned To" LabelPosition="Left" />
<Control FieldName="System.State" Type="FieldControl" Label="Stat&e" LabelPosition="Left" />
<Control FieldName="System.Reason" Type="FieldControl" Label="Reason" LabelPosition="Left" />
</Column>
</Group>
</Column>
<Column PercentWidth="50">
<Group Label="Details">
<Column PercentWidth="100">
<Control FieldName="Microsoft.VSTS.Scheduling.Effort" Type="FieldControl" Label="Effort" LabelPosition="Left" />
<Control FieldName="Microsoft.VSTS.Scheduling.RemainingWork" Type="FieldControl" Label="Remaining Work" LabelPosition="Left" />
<Control FieldName="Microsoft.VSTS.Common.Severity" Type="FieldControl" Label="Severity" LabelPosition="Left" />
<Control FieldName="System.AreaPath" Type="WorkItemClassificationControl" Label="&Area" LabelPosition="Left" />
</Column>
</Group>
</Column>
</Group>
<Group>
<Column PercentWidth="50">
<TabGroup>
<Tab Label="Steps to Reproduce">
<Control FieldName="Microsoft.VSTS.TCM.ReproSteps" Type="HtmlFieldControl" Label="" LabelPosition="Top" Dock="Fill" MinimumSize="(100,200)" />
</Tab>
<Tab Label="System">
<Group Label="Build">
<Column PercentWidth="100">
<Control FieldName="Microsoft.VSTS.Build.FoundIn" Type="FieldControl" Label="Found In Build" LabelPosition="Left" />
<Control FieldName="Microsoft.VSTS.Build.IntegrationBuild" Type="FieldControl" Label="Integrated in Build" LabelPosition="Left" />
</Column>
</Group>
<Control FieldName="Microsoft.VSTS.TCM.SystemInfo" Type="HtmlFieldControl" Label="System Info" LabelPosition="Top" Dock="Fill" />
</Tab>
<Tab Label="Test Cases">
<Control Type="LinksControl" Label="" LabelPosition="Top" Name="TestedBy">
<LinksControlOptions>
<LinkColumns>
<LinkColumn RefName="System.Id" />
<LinkColumn RefName="System.WorkItemType" />
<LinkColumn RefName="System.Title" />
<LinkColumn RefName="System.AssignedTo" />
<LinkColumn RefName="System.State" />
</LinkColumns>
<WorkItemLinkFilters FilterType="include">
<Filter LinkType="Microsoft.VSTS.Common.TestedBy" FilterOn="forwardname" />
</WorkItemLinkFilters>
<ExternalLinkFilters FilterType="excludeAll" />
<WorkItemTypeFilters FilterType="include">
<Filter WorkItemType="Test Case" />
</WorkItemTypeFilters>
</LinksControlOptions>
</Control>
</Tab>
<Tab Label="Tasks">
<Control Type="LinksControl" Label="" LabelPosition="Top" Name="TaskLinks">
<LinksControlOptions>
<LinkColumns>
<LinkColumn RefName="System.Id" />
<LinkColumn RefName="System.WorkItemType" />
<LinkColumn RefName="System.Title" />
<LinkColumn RefName="System.AssignedTo" />
<LinkColumn RefName="System.State" />
</LinkColumns>
<WorkItemLinkFilters FilterType="include">
<Filter LinkType="System.LinkTypes.Hierarchy" FilterOn="forwardname" />
</WorkItemLinkFilters>
<ExternalLinkFilters FilterType="excludeAll" />
<WorkItemTypeFilters FilterType="include">
<Filter WorkItemType="Task" />
</WorkItemTypeFilters>
</LinksControlOptions>
</Control>
</Tab>
</TabGroup>
</Column>
<Column PercentWidth="50">
<TabGroup Margin="(5,0,0,0)">
<Tab Label="Acceptance Criteria">
<Control FieldName="Microsoft.VSTS.Common.AcceptanceCriteria" Type="HtmlFieldControl" Label="" LabelPosition="Top" Dock="Fill" MinimumSize="(100,200)" />
</Tab>
<Tab Label="History">
<Control FieldName="System.History" Type="WorkItemLogControl" Label="" LabelPosition="Top" Dock="Fill" />
</Tab>
<Tab Label="Links">
<Control Type="LinksControl" LabelPosition="Top" Name="GeneralLinks">
<LinksControlOptions>
<LinkColumns>
<LinkColumn RefName="System.Id" />
<LinkColumn RefName="System.WorkItemType" />
<LinkColumn RefName="System.Title" />
<LinkColumn RefName="System.AssignedTo" />
<LinkColumn RefName="System.State" />
<LinkColumn LinkAttribute="System.Links.Comment" />
</LinkColumns>
<WorkItemLinkFilters FilterType="includeAll" />
<ExternalLinkFilters FilterType="includeAll" />
<WorkItemTypeFilters FilterType="includeAll" />
</LinksControlOptions>
</Control>
</Tab>
<Tab Label="Attachments">
<Control Type="AttachmentsControl" LabelPosition="Top" />
</Tab>
</TabGroup>
</Column>
</Group>
</Layout>
<WebLayout ShowEmptyReadOnlyFields="false">
<SystemControls>
<Control Type="FieldControl" FieldName="System.Title" EmptyText="<Enter title here>" />
<Control Label="Ite&ration" Type="WorkItemClassificationControl" FieldName="System.IterationPath" />
<Control Label="Assi&gned To" Type="FieldControl" FieldName="System.AssignedTo" />
<Control Label="Stat&e" Type="FieldControl" FieldName="System.State" />
<Control Label="Reason" Type="FieldControl" FieldName="System.Reason" />
<Control Label="&Area" Type="WorkItemClassificationControl" FieldName="System.AreaPath" />
<Control Label="Links" Type="LinksControl" Name="Links" />
<Control Label="History" Type="WorkItemLogControl" FieldName="System.History" />
<Control Label="Attachments" Type="AttachmentsControl" Name="Attachments" />
</SystemControls>
<Page Label="Details" LayoutMode="FirstColumnWide">
<Section>
<Group Label="Steps to Reproduce">
<Control Type="HtmlFieldControl" FieldName="Microsoft.VSTS.TCM.ReproSteps" />
</Group>
<Group Label="System Info">
<Control Label="System Info" Type="HtmlFieldControl" FieldName="Microsoft.VSTS.TCM.SystemInfo" />
</Group>
<Group Label="Acceptance Criteria">
<Control Type="HtmlFieldControl" FieldName="Microsoft.VSTS.Common.AcceptanceCriteria" />
</Group>
</Section>
<Section>
<Group Label="Status">
<Control Label="Reason" Type="FieldControl" FieldName="System.Reason" />
</Group>
<Group Label="Build">
<Control Label="Found In Build" Type="FieldControl" FieldName="Microsoft.VSTS.Build.FoundIn" />
<Control Label="Integrated in Build" Type="FieldControl" FieldName="Microsoft.VSTS.Build.IntegrationBuild" />
</Group>
</Section>
<Section>
<Group Label="Development">
<Control Type="LinksControl" Name="Development">
<LinksControlOptions ViewMode="Dynamic" ZeroDataExperience="Development" ShowCallToAction="true">
<ListViewOptions GroupLinks="false"></ListViewOptions>
<LinkFilters>
<ExternalLinkFilter Type="Build" />
<ExternalLinkFilter Type="Integrated in build" />
<ExternalLinkFilter Type="Pull Request" />
<ExternalLinkFilter Type="Branch" />
<ExternalLinkFilter Type="Fixed in Commit" />
<ExternalLinkFilter Type="Fixed in Changeset" />
<ExternalLinkFilter Type="Source Code File" />
<ExternalLinkFilter Type="Found in build" />
</LinkFilters>
</LinksControlOptions>
</Control>
</Group>
<Group Label="Related Work">
<Control Type="LinksControl" Name="Related Work">
<LinksControlOptions>
<LinkFilters>
<WorkItemLinkFilter Type="System.LinkTypes.Duplicate-Reverse" />
<WorkItemLinkFilter Type="System.LinkTypes.Hierarchy-Reverse" />
<WorkItemLinkFilter Type="Microsoft.VSTS.Common.TestedBy-Forward" />
<WorkItemLinkFilter Type="Microsoft.VSTS.Common.TestedBy-Reverse" />
<WorkItemLinkFilter Type="System.LinkTypes.Hierarchy-Forward" />
<WorkItemLinkFilter Type="System.LinkTypes.Duplicate-Forward" />
<WorkItemLinkFilter Type="System.LinkTypes.Dependency" />
<WorkItemLinkFilter Type="System.LinkTypes.Related" />
</LinkFilters>
<Columns>
<Column Name="System.State" />
<Column Name="System.ChangedDate" />
<Column Name="System.Links.Comment" />
</Columns>
</LinksControlOptions>
</Control>
</Group>
<Group Label="Details">
<Control Label="Effort" Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.Effort" />
<Control Label="Remaining Work" Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.RemainingWork" />
<Control Label="Severity" Type="FieldControl" FieldName="Microsoft.VSTS.Common.Severity" />
</Group>
</Section>
</Page>
</WebLayout>
</FORM>
</WORKITEMTYPE>
</witd:WITD>
Did you do "enable new features" => In the config section (Projects) you can find this.
Also there is a guide from MS to your topic: https://learn.microsoft.com/en-us/vsts/work/customize/update-customized-process-template?view=tfs-2018
Try to add the following sample between <ProjectProcessConfiguration> </ProjectProcessConfiguration>
<BugWorkItems category="Microsoft.BugCategory" pluralName="Bugs" singularName="Bug">
<States>
<State type="Proposed" value="New" />
<State type="Proposed" value="Approved" />
<State type="InProgress" value="Committed" />
<State type="Complete" value="Done" />
</States>
</BugWorkItems>
UPDATE #2:
I have created OfficeDev/office-js#124 and OfficeDev/office-js-docs#1415 in order for someone at Microsoft to respond to this problem. Using Microsoft Support, both online and in the Outlook for iOS app, have proved fruitless.
UPDATE #1:
It appears that downgrading the requirement set at the base level of the manifest from Mailbox 1.5 to Mailbox 1.4 gets my side-loaded add-in to appear on my iOS device. This looks like a bug!
However, doing this broadens the list of supported platforms to include Office 2013. Based on the answer to another of my questions, this means I also need to set Mailbox 1.4 at the VersionOverridesV1_0 level.
I have still set Mailbox 1.5 at the VersionOverridesV1_1 level, so that there is support for calling the Outlook REST APIs and to support pinnable taskpanes.
Will my add-in, that uses APIs added in Mailbox 1.5, work as I expect on Outlook 2013?
(Specifically, I am using the new Office.context.mailbox.getCallbackTokenAsync() method to get a REST token.)
I am trying to get my add-in to appear on my iOS device so that I can test it. The device is an iPhone 6s with iOS 11.0.3 installed.
I want to target:
Outlook 2016 or later
Outlook on the Web
Outlook 2016 for Mac
Outlook for iOS
I require Mailbox 1.5 in order to support calling the Outlook REST APIs and to support pinnable taskpanes.
Here is my manifest:
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp
xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="MailApp">
<Id>40ca534e-480c-444f-85bf-9f7051f23fe2</Id>
<Version>1.0.2.0</Version>
<ProviderName>TitleX E-Conveyancing Pty Ltd</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="[TEST] TitleX" />
<Description DefaultValue="Save your mail to TitleX."/>
<IconUrl DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-64.png" />
<HighResolutionIconUrl DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-128.png" />
<SupportUrl DefaultValue="https://community.titlex.com.au/s/" />
<AppDomains>
<!--LEAP Add-in Domains -->
<AppDomain>https://outlookapp-dev.leap365.com/</AppDomain>
<AppDomain>https://outlookapp-test.leap365.com/</AppDomain>
<AppDomain>https://outlookapp.leap365.com/</AppDomain>
<!--TitleX Add-in Domains -->
<AppDomain>https://outlookapp.dev.titlex.com.au/</AppDomain>
<AppDomain>https://outlookapp.test.titlex.com.au/</AppDomain>
<AppDomain>https://outlookapp.titlex.com.au/</AppDomain>
<!-- LEAP Auth -->
<AppDomain>https://auth-dev.leap.services/</AppDomain>
<AppDomain>https://auth-test.leap.services/</AppDomain>
<AppDomain>https://auth.leap.services/</AppDomain>
<!-- TitleX Auth -->
<AppDomain>https://login.dev.titlex.com.au/</AppDomain>
<AppDomain>https://login.test.titlex.com.au/</AppDomain>
<AppDomain>https://login.titlex.com.au/</AppDomain>
<AppDomain>https://login.dev.titlex.co.uk/</AppDomain>
<AppDomain>https://login.test.titlex.co.uk/</AppDomain>
<AppDomain>https://login.titlex.co.uk/</AppDomain>
<AppDomain>https://login.dev.titlex.com/</AppDomain>
<AppDomain>https://login.test.titlex.com/</AppDomain>
<AppDomain>https://login.titlex.com/</AppDomain>
</AppDomains>
<Hosts>
<Host Name="Mailbox" />
</Hosts>
<Requirements>
<Sets DefaultMinVersion="1.5">
<Set Name="Mailbox" />
</Sets>
</Requirements>
<FormSettings>
<Form xsi:type="ItemRead">
<DesktopSettings>
<SourceLocation DefaultValue="https://outlookapp.test.titlex.com.au/titlex.html"/>
<RequestedHeight>280</RequestedHeight>
</DesktopSettings>
</Form>
</FormSettings>
<Permissions>ReadWriteMailbox</Permissions>
<Rule xsi:type="RuleCollection" Mode="Or">
<Rule xsi:type="ItemIs" ItemType="Message" FormType="Read" /></Rule>
<DisableEntityHighlighting>false</DisableEntityHighlighting>
<VersionOverrides
xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
<Requirements>
<bt:Sets DefaultMinVersion="1.5">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<FunctionFile resid="TitleX.Functions.Url" />
<!-- Message Read -->
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<OfficeTab id="TabDefault">
<Group id="TitleX.Group1">
<Label resid="TitleX.Group1Label" />
<Control xsi:type="Button" id="TitleX.DefaultCommand">
<Label resid="TitleX.DefaultCommand.Label" />
<Supertip>
<Title resid="TitleX.DefaultCommand.Label" />
<Description resid="TitleX.DefaultCommand.Tooltip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="TitleX.Icon.16" />
<bt:Image size="32" resid="TitleX.Icon.32" />
<bt:Image size="80" resid="TitleX.Icon.80" />
<bt:Image size="20" resid="TitleX.Icon.20" />
<bt:Image size="24" resid="TitleX.Icon.24" />
<bt:Image size="40" resid="TitleX.Icon.40" />
<bt:Image size="48" resid="TitleX.Icon.48" />
<bt:Image size="64" resid="TitleX.Icon.64" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="TitleX.Taskpane.Url" />
</Action>
</Control>
</Group>
<!--<Label resid="Leap.TabLabel"/>-->
</OfficeTab>
</ExtensionPoint>
<!-- Go to http://aka.ms/ExtensionPointsCommands to learn how to add more Extension Points: MessageRead, AppointmentOrganizer, AppointmentAttendee -->
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="TitleX.Icon.16" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-16.png"/>
<bt:Image id="TitleX.Icon.32" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-32.png"/>
<bt:Image id="TitleX.Icon.80" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-80.png"/>
<bt:Image id="TitleX.Icon.20" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-20.png" />
<bt:Image id="TitleX.Icon.24" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-24.png" />
<bt:Image id="TitleX.Icon.25" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-25.png" />
<bt:Image id="TitleX.Icon.40" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-40.png" />
<bt:Image id="TitleX.Icon.48" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-48.png" />
<bt:Image id="TitleX.Icon.64" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-64.png" />
</bt:Images>
<bt:Urls>
<bt:Url id="TitleX.Taskpane.Url" DefaultValue="https://outlookapp.test.titlex.com.au/titlex.html" />
<bt:Url id="TitleX.Functions.Url" DefaultValue="https://outlookapp.test.titlex.com.au/functions.html" />
</bt:Urls>
<bt:ShortStrings>
<bt:String id="TitleX.TabLabel" DefaultValue="[TEST] TitleX" />
<bt:String id="TitleX.Group1Label" DefaultValue="TitleX" />
<bt:String id="TitleX.DefaultCommand.Label" DefaultValue="[TEST] TitleX Mail Manager" />
<bt:String id="TitleX.DefaultCommand.Title" DefaultValue="[TEST] TitleX" />
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="TitleX.DefaultCommand.Tooltip" DefaultValue="Click to show the add-in." />
<bt:String id="TitleX.Description" DefaultValue="Save your mail to TitleX." />
</bt:LongStrings>
</Resources>
<!-- NOTE: TO SUPPORT A PINNABLE TASKPANE AND MOBILEFORMFACTOR -->
<VersionOverrides
xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
<Requirements>
<bt:Sets DefaultMinVersion="1.5">
<bt:Set Name="Mailbox" />
</bt:Sets>
</Requirements>
<Hosts>
<Host xsi:type="MailHost">
<DesktopFormFactor>
<FunctionFile resid="TitleX.Functions.Url" />
<!-- Message Read -->
<ExtensionPoint xsi:type="MessageReadCommandSurface">
<OfficeTab id="TabDefault">
<Group id="TitleX.Group1">
<Label resid="TitleX.Group1Label" />
<Control xsi:type="Button" id="TitleX.DefaultCommand">
<Label resid="TitleX.DefaultCommand.Label" />
<Supertip>
<Title resid="TitleX.DefaultCommand.Label" />
<Description resid="TitleX.DefaultCommand.Tooltip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="TitleX.Icon.16" />
<bt:Image size="32" resid="TitleX.Icon.32" />
<bt:Image size="80" resid="TitleX.Icon.80" />
<bt:Image size="20" resid="TitleX.Icon.20" />
<bt:Image size="24" resid="TitleX.Icon.24" />
<bt:Image size="40" resid="TitleX.Icon.40" />
<bt:Image size="48" resid="TitleX.Icon.48" />
<bt:Image size="64" resid="TitleX.Icon.64" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="TitleX.Taskpane.Url" />
<SupportsPinning>true</SupportsPinning>
</Action>
</Control>
<!-- Go to http://aka.ms/ButtonCommands to learn how to add more Controls: ExecuteFunction and Menu -->
</Group>
</OfficeTab>
</ExtensionPoint>
<!-- Go to http://aka.ms/ExtensionPointsCommands to learn how to add more Extension Points: MessageRead, AppointmentOrganizer, AppointmentAttendee -->
</DesktopFormFactor>
<!-- See https://learn.microsoft.com/en-us/outlook/add-ins/add-mobile-support -->
<MobileFormFactor>
<FunctionFile resid="TitleX.Functions.Url" />
<ExtensionPoint xsi:type="MobileMessageReadCommandSurface">
<Group id="TitleX.Group1">
<Label resid="TitleX.Group1Label" />
<Control xsi:type="MobileButton" id="TitleX.DefaultCommand">
<Label resid="TitleX.DefaultCommand.Label" />
<Icon xsi:type="bt:MobileIconList">
<bt:Image size="25" scale="1" resid="TitleX.Icon.25" />
<bt:Image size="25" scale="2" resid="TitleX.Icon.25" />
<bt:Image size="25" scale="3" resid="TitleX.Icon.25" />
<bt:Image size="32" scale="1" resid="TitleX.Icon.32" />
<bt:Image size="32" scale="2" resid="TitleX.Icon.32" />
<bt:Image size="32" scale="3" resid="TitleX.Icon.32" />
<bt:Image size="48" scale="1" resid="TitleX.Icon.48" />
<bt:Image size="48" scale="2" resid="TitleX.Icon.48" />
<bt:Image size="48" scale="3" resid="TitleX.Icon.48" />
</Icon>
<Action xsi:type="ShowTaskpane">
<SourceLocation resid="TitleX.Taskpane.Url" />
</Action>
</Control>
</Group>
</ExtensionPoint>
</MobileFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="TitleX.Icon.16" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-16.png"/>
<bt:Image id="TitleX.Icon.32" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-32.png"/>
<bt:Image id="TitleX.Icon.80" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-80.png"/>
<bt:Image id="TitleX.Icon.20" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-20.png" />
<bt:Image id="TitleX.Icon.24" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-24.png" />
<bt:Image id="TitleX.Icon.25" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-25.png" />
<bt:Image id="TitleX.Icon.40" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-40.png" />
<bt:Image id="TitleX.Icon.48" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-48.png" />
<bt:Image id="TitleX.Icon.64" DefaultValue="https://outlookapp.test.titlex.com.au/images/icon-64.png" />
</bt:Images>
<bt:Urls>
<bt:Url id="TitleX.Taskpane.Url" DefaultValue="https://outlookapp.test.titlex.com.au/titlex.html" />
<bt:Url id="TitleX.Functions.Url" DefaultValue="https://outlookapp.test.titlex.com.au/functions.html" />
</bt:Urls>
<bt:ShortStrings>
<bt:String id="TitleX.TabLabel" DefaultValue="[TEST] TitleX" />
<bt:String id="TitleX.Group1Label" DefaultValue="TitleX" />
<bt:String id="TitleX.DefaultCommand.Label" DefaultValue="[TEST] TitleX Mail Manager" />
<bt:String id="TitleX.DefaultCommand.Title" DefaultValue="[TEST] TitleX" />
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="TitleX.DefaultCommand.Tooltip" DefaultValue="Click to show the add-in." />
<bt:String id="TitleX.Description" DefaultValue="Save your mail to TitleX." />
</bt:LongStrings>
</Resources>
</VersionOverrides>
</VersionOverrides>
</OfficeApp>
Here is the validate-office-addin result for the above add-in manifest:
Calling validation service. This might take a moment...
-------------------------------------
Validation: Passed
Based on the requirements specified in your manifest, your add-in can run on the following platforms; your add-in will be tested on these platforms when you submit it to the Office Store:
- Outlook 2016 or later
- Outlook 2016 for Mac
- Outlook for iOS
- Outlook on the Web
Important: This analysis is based on the requirements specified in your manifest and does not account for any runtime JavaScript calls within your add-in. For information about which API sets and features are supported on each platform, see Office Add-in host and platfo
rm availability. (https://dev.office.com/add-in-availability).
*This does not include mobile apps. You can opt-in to support mobile apps when you submit your add-in.
-------------------------------------
Looking at the documentation for Office Add-in host and platform availability for Outlook, I see that Mailbox 1.5 is supported on all platforms that I want to target.
So, everything looks to be aligned, but my add-in won't appear on my iOS device!
If, however, I downgrade the requirement set from 1.5 to 1.4, then side-load again, the add-in appears. Obviously, that's contrary to what I expect.
Question: why does specifying the Mailbox 1.5 requirement set on my manifest make it so that my side-loaded add-in does NOT appear on my iOS device? Please help.
As of 26 June 2018, Outlook for iOS 2.82.0 now correctly side-loads my add-in for testing.
For a heavily customized process template, I'm trying to implement multiple specialized LinksControls on the front page ("Details") of the work item form (TFS2017.Update1).
What I have done is the following:
<Group Label="Derived">
<Control Type="LinksControl" Name="Derived">
<LinksControlOptions ViewMode="List">
<ListViewOptions GroupLinks="true" />
<LinkFilters>
<WorkItemLinkFilter Type="RE.DerivedFrom-Forward" />
</LinkFilters>
<WorkItemTypeFilters>
<Filter WorkItemType="Product Requirement" />
<Filter WorkItemType="Customer Requirement" />
</WorkItemTypeFilters>
<Columns>
<Column Name="System.State" />
<Column Name="System.ChangedDate" />
<Column Name="System.Links.Comment" />
</Columns>
</LinksControlOptions>
</Control>
</Group>
<Group Label="Usings">
<Control Type="LinksControl" Name="Usings">
<LinksControlOptions ViewMode="List">
<ListViewOptions GroupLinks="true" />
<LinkFilters>
<WorkItemLinkFilter Type="RE.Uses" />
</LinkFilters>
<WorkItemTypeFilters>
<Filter WorkItemType="Product Property" />
<Filter WorkItemType="Product Requirement" />
<Filter WorkItemType="Customer Requirement" />
</WorkItemTypeFilters>
<Columns>
<Column Name="System.State" />
<Column Name="System.ChangedDate" />
<Column Name="System.Links.Comment" />
</Columns>
</LinksControlOptions>
</Control>
</Group>
<Group Label="Hierarchy">
<Control Type="LinksControl" Name="Hierarchy">
<LinksControlOptions ViewMode="List">
<ListViewOptions GroupLinks="true" />
<LinkFilters>
<WorkItemLinkFilter Type="System.LinkTypes.Hierarchy" />
</LinkFilters>
<Columns>
<Column Name="System.State" />
<Column Name="System.ChangedDate" />
<Column Name="System.Links.Comment" />
</Columns>
</LinksControlOptions>
</Control>
</Group>
When I open the form, some of the groups are empty, although there definitely are other work items linked using the link types in the filter:
To verify, that the links really exist I checked on the "all links" page:
When I hit the refresh button other links are shown. Which seems to be quite random.
Is there an error in my XML? Or is there any restriction to the WebLayout and usage of LinksControl that I'm not aware of? Or is this a known bug in TFS?
This seems to be a version specific bug(?) in TFS 2017.1.
I copied the collection to a fresh TFS 2018 install and now it looks like I expected it:
Not a perfect answer. But a solution I can live with, since we are about to upgrade to TFS 2018 anyway.
I have a set of custom controls on work items. (The server is on-prem TFS 2015)
The definition of the group is:
<Column PercentWidth="100">
<Control FieldName="System.AssignedTo" Type="FieldControl" Label="Assi&gned To" LabelPosition="Left" />
<Control Type="LabelControl" Label="State Order : 1.New 2.Approved 3.Committed 4.Done 5.Removed" LabelPosition="Left" />
<Control FieldName="System.State" Type="FieldControl" Label="Stat&e" LabelPosition="Left" />
<Control FieldName="System.Reason" Type="FieldControl" Label="Reason" LabelPosition="Left" ReadOnly="True" />
<Group>
<Column PercentWidth="8">
<Control Type="LabelControl" Label="Release #" LabelPosition="Left" />
</Column>
<Column PercentWidth="5">
<Control FieldName="MyCompany.ReleaseYear" Type="FieldControl" LabelPosition="Left" />
</Column>
<Column PercentWidth="5">
<Control FieldName="MyCompany.MajorRelease" Type="FieldControl" LabelPosition="Left" />
</Column>
<Column PercentWidth="5">
<Control FieldName="MyCompany.MinorRelease" Type="FieldControl" LabelPosition="Left" />
</Column>
<Column PercentWidth="5">
<Control FieldName="MyCompany.HotfixRelease" Type="FieldControl" LabelPosition="Left" />
</Column>
<Column PercentWidth="25">
<Control FieldName="MyCompany.HotfixSeverity" Type="FieldControl" LabelPosition="Left" />
</Column>
</Group>
If you look at the Group element in the sample the field for the 1st and last control are strings. Those in the middle are integers.
The problem is the same work item displays differently in Visual Studio 2015 and using the TFS Web interface. In the Web interface it all looks ok.
The same data in Visual Studio is practically unreadable.
You can't even see the 1st 2 integer fields even if there is data selected. (they are drop downs). It does not appear the VS version is respecting the field or column widths.
Is there any way to fix this?
Is there a way to have field boarders appear in VS?
As requested full wit here:
<?xml version="1.0" encoding="utf-8"?>
<witd:WITD application="Work item type editor" version="1.0" xmlns:witd="http://schemas.microsoft.com/VisualStudio/2008/workitemtracking/typedef">
<WORKITEMTYPE name="Product Backlog Item">
<DESCRIPTION>Tracks an activity the user will be able to perform with the product.</DESCRIPTION>
<FIELDS>
<FIELD name="Iteration Path" refname="System.IterationPath" type="TreePath" reportable="dimension" />
<FIELD name="Iteration ID" refname="System.IterationId" type="Integer" />
<FIELD name="External Link Count" refname="System.ExternalLinkCount" type="Integer" />
<FIELD name="Team Project" refname="System.TeamProject" type="String" reportable="dimension" />
<FIELD name="Hyperlink Count" refname="System.HyperLinkCount" type="Integer" />
<FIELD name="Attached File Count" refname="System.AttachedFileCount" type="Integer" />
<FIELD name="Node Name" refname="System.NodeName" type="String" />
<FIELD name="Area Path" refname="System.AreaPath" type="TreePath" reportable="dimension" />
<FIELD name="Revised Date" refname="System.RevisedDate" type="DateTime" reportable="detail" />
<FIELD name="Changed Date" refname="System.ChangedDate" type="DateTime" reportable="dimension" />
<FIELD name="ID" refname="System.Id" type="Integer" reportable="dimension" />
<FIELD name="Area ID" refname="System.AreaId" type="Integer" />
<FIELD name="Authorized As" refname="System.AuthorizedAs" type="String" syncnamechanges="true" />
<FIELD name="Title" refname="System.Title" type="String" reportable="dimension">
<REQUIRED />
</FIELD>
<FIELD name="State" refname="System.State" type="String" reportable="dimension" />
<FIELD name="Authorized Date" refname="System.AuthorizedDate" type="DateTime" />
<FIELD name="Watermark" refname="System.Watermark" type="Integer" />
<FIELD name="Rev" refname="System.Rev" type="Integer" reportable="dimension" />
<FIELD name="Changed By" refname="System.ChangedBy" type="String" syncnamechanges="true" reportable="dimension" />
<FIELD name="Reason" refname="System.Reason" type="String" reportable="dimension" />
<FIELD name="Assigned To" refname="System.AssignedTo" type="String" syncnamechanges="true" reportable="dimension">
<ALLOWEXISTINGVALUE />
<VALIDUSER />
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="[project]\Contributors" />
</ALLOWEDVALUES>
</FIELD>
<FIELD name="Work Item Type" refname="System.WorkItemType" type="String" reportable="dimension" />
<FIELD name="Created Date" refname="System.CreatedDate" type="DateTime" reportable="dimension" />
<FIELD name="Created By" refname="System.CreatedBy" type="String" syncnamechanges="true" reportable="dimension" />
<FIELD name="Description" refname="System.Description" type="HTML" />
<FIELD name="History" refname="System.History" type="History" />
<FIELD name="Related Link Count" refname="System.RelatedLinkCount" type="Integer" />
<FIELD name="Tags" refname="System.Tags" type="PlainText" />
<FIELD name="Backlog Priority" refname="Microsoft.VSTS.Common.BacklogPriority" type="Double" reportable="detail" />
<FIELD name="Integration Build" refname="Microsoft.VSTS.Build.IntegrationBuild" type="String" reportable="dimension">
<SUGGESTEDVALUES expanditems="true">
<LISTITEM value="<None>" />
</SUGGESTEDVALUES>
</FIELD>
<FIELD name="Closed Date" refname="Microsoft.VSTS.Common.ClosedDate" type="DateTime" reportable="dimension">
<WHENNOTCHANGED field="System.State">
<READONLY />
</WHENNOTCHANGED>
</FIELD>
<FIELD name="Effort" refname="Microsoft.VSTS.Scheduling.Effort" type="Double" reportable="measure" formula="sum" />
<FIELD name="Acceptance Criteria" refname="Microsoft.VSTS.Common.AcceptanceCriteria" type="HTML" />
<FIELD name="Business Value" refname="Microsoft.VSTS.Common.BusinessValue" type="Integer" reportable="measure" formula="sum" />
<FIELD name="OldSystemObjectID" refname="OldSystem.Common.ObjectId" type="String" reportable="dimension" />
<FIELD name="OldSystemFormattedID" refname="OldSystem.Common.FormattedId" type="String" reportable="dimension" />
<FIELD name="OldSystemProjectName" refname="OldSystem.Common.Project" type="String" />
<FIELD name="OldSystemUpdateTime" refname="OldSystem.Common.UpdateTime" type="DateTime" />
<FIELD name="Support Ticket #" refname="MyCompany.SupportTicket" type="String" reportable="detail" />
<FIELD name="OldSystemTags" refname="OldSystem.Common.Tags" type="String" />
<FIELD name="Team" refname="MyCompany.Team" type="String" />
<FIELD name="SVNLog" refname="MyCompany.SVNLog" type="HTML">
<READONLY not="MyCompany\RT - SCM" />
</FIELD>
<FIELD name="MajorRelease" refname="MyCompany.MajorRelease" type="Integer" reportable="detail">
<ALLOWEXISTINGVALUE />
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="1" />
<LISTITEM value="10" />
<LISTITEM value="11" />
<LISTITEM value="12" />
<LISTITEM value="13" />
<LISTITEM value="14" />
<LISTITEM value="15" />
<LISTITEM value="16" />
<LISTITEM value="17" />
<LISTITEM value="18" />
<LISTITEM value="19" />
<LISTITEM value="2" />
<LISTITEM value="20" />
<LISTITEM value="21" />
<LISTITEM value="22" />
<LISTITEM value="23" />
<LISTITEM value="24" />
<LISTITEM value="3" />
<LISTITEM value="4" />
<LISTITEM value="5" />
<LISTITEM value="6" />
<LISTITEM value="7" />
<LISTITEM value="8" />
<LISTITEM value="9" />
</ALLOWEDVALUES>
<WHENNOT field="MyCompany.ReleaseYear" value="">
<ALLOWEXISTINGVALUE />
<REQUIRED />
</WHENNOT>
</FIELD>
<FIELD name="Hotfix" refname="MyCompany.Hotfix" type="String" reportable="detail">
<ALLOWEXISTINGVALUE />
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="0" />
<LISTITEM value="1" />
<LISTITEM value="2" />
<LISTITEM value="3" />
<LISTITEM value="4" />
<LISTITEM value="5" />
</ALLOWEDVALUES>
</FIELD>
<FIELD name="HotfixSeverity" refname="MyCompany.HotfixSeverity" type="String" reportable="detail">
<ALLOWEXISTINGVALUE />
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="Hot Update" />
<LISTITEM value="Hotfix" />
<LISTITEM value="Regulatory" />
</ALLOWEDVALUES>
<WHEN field="MyCompany.HotfixRelease" value="1">
<ALLOWEXISTINGVALUE />
<REQUIRED />
</WHEN>
<WHEN field="MyCompany.HotfixRelease" value="2">
<ALLOWEXISTINGVALUE />
<REQUIRED />
</WHEN>
<WHEN field="MyCompany.HotfixRelease" value="3">
<ALLOWEXISTINGVALUE />
<REQUIRED />
</WHEN>
<WHEN field="MyCompany.HotfixRelease" value="4">
<ALLOWEXISTINGVALUE />
<REQUIRED />
</WHEN>
<WHEN field="MyCompany.HotfixRelease" value="5">
<ALLOWEXISTINGVALUE />
<REQUIRED />
</WHEN>
</FIELD>
<FIELD name="ReleaseYear" refname="MyCompany.ReleaseYear" type="Integer" reportable="detail">
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="15" />
<LISTITEM value="16" />
<LISTITEM value="17" />
<LISTITEM value="18" />
<LISTITEM value="19" />
<LISTITEM value="20" />
</ALLOWEDVALUES>
</FIELD>
<FIELD name="MinorRelease" refname="MyCompany.MinorRelease" type="Integer" reportable="detail">
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="0" />
<LISTITEM value="1" />
<LISTITEM value="2" />
<LISTITEM value="3" />
<LISTITEM value="4" />
<LISTITEM value="5" />
</ALLOWEDVALUES>
<WHENNOT field="MyCompany.MajorRelease" value="">
<REQUIRED />
</WHENNOT>
</FIELD>
<FIELD name="HotfixRelease" refname="MyCompany.HotfixRelease" type="Integer" reportable="detail">
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="1" />
<LISTITEM value="2" />
<LISTITEM value="3" />
<LISTITEM value="4" />
<LISTITEM value="5" />
</ALLOWEDVALUES>
</FIELD>
</FIELDS>
<WORKFLOW>
<STATES>
<STATE value="Approved">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY />
</FIELD>
</FIELDS>
</STATE>
<STATE value="Committed">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY />
</FIELD>
</FIELDS>
</STATE>
<STATE value="Done">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Scheduling.Effort">
<READONLY />
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.BusinessValue">
<READONLY />
</FIELD>
</FIELDS>
</STATE>
<STATE value="New">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<EMPTY />
</FIELD>
</FIELDS>
</STATE>
<STATE value="Removed" />
</STATES>
<TRANSITIONS>
<TRANSITION from="New" to="Done">
<REASONS>
<DEFAULTREASON value="Work finished" />
</REASONS>
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<SERVERDEFAULT from="clock" />
</FIELD>
</FIELDS>
</TRANSITION>
<TRANSITION from="Approved" to="Done">
<REASONS>
<DEFAULTREASON value="Work finished" />
</REASONS>
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<SERVERDEFAULT from="clock" />
</FIELD>
</FIELDS>
</TRANSITION>
<TRANSITION from="Committed" to="Done">
<REASONS>
<DEFAULTREASON value="Work finished" />
</REASONS>
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ClosedDate">
<SERVERDEFAULT from="clock" />
</FIELD>
</FIELDS>
</TRANSITION>
<TRANSITION from="New" to="Removed">
<REASONS>
<DEFAULTREASON value="Removed from the backlog" />
</REASONS>
</TRANSITION>
<TRANSITION from="Approved" to="Removed">
<REASONS>
<DEFAULTREASON value="Removed from the backlog" />
</REASONS>
</TRANSITION>
<TRANSITION from="" to="New">
<REASONS>
<DEFAULTREASON value="New backlog item" />
</REASONS>
</TRANSITION>
<TRANSITION from="Done" to="New">
<REASONS>
<DEFAULTREASON value="Moved to the backlog" />
</REASONS>
</TRANSITION>
<TRANSITION from="Removed" to="New">
<REASONS>
<DEFAULTREASON value="Reconsidering backlog item" />
</REASONS>
</TRANSITION>
<TRANSITION from="Approved" to="New">
<REASONS>
<DEFAULTREASON value="Moved to the backlog" />
</REASONS>
</TRANSITION>
<TRANSITION from="Committed" to="New">
<REASONS>
<DEFAULTREASON value="Moved to the backlog" />
</REASONS>
</TRANSITION>
<TRANSITION from="Done" to="Approved">
<REASONS>
<DEFAULTREASON value="Additional work found" />
</REASONS>
</TRANSITION>
<TRANSITION from="New" to="Approved">
<REASONS>
<DEFAULTREASON value="Approved by the Product Owner" />
</REASONS>
</TRANSITION>
<TRANSITION from="Committed" to="Approved">
<REASONS>
<DEFAULTREASON value="Work stopped" />
</REASONS>
</TRANSITION>
<TRANSITION from="Done" to="Committed">
<REASONS>
<DEFAULTREASON value="Additional work found" />
</REASONS>
</TRANSITION>
<TRANSITION from="New" to="Committed">
<REASONS>
<DEFAULTREASON value="Commitment made by the team" />
</REASONS>
</TRANSITION>
<TRANSITION from="Approved" to="Committed">
<REASONS>
<DEFAULTREASON value="Commitment made by the team" />
</REASONS>
</TRANSITION>
</TRANSITIONS>
</WORKFLOW>
<FORM>
<Layout HideReadOnlyEmptyFields="true" HideControlBorders="true">
<Group Margin="(4,0,0,0)">
<Column PercentWidth="100">
<Control FieldName="System.Title" Type="FieldControl" ControlFontSize="large" EmptyText="<Enter title here>" LabelPosition="Top" />
</Column>
</Group>
<Group Margin="(10,0,0,0)">
<Column PercentWidth="100">
<Control FieldName="System.IterationPath" Type="WorkItemClassificationControl" Label="Ite&ration" LabelPosition="Left" />
</Column>
</Group>
<Group Margin="(10,0,0,0)">
<Column PercentWidth="50">
<Group Label="Status">
<Column PercentWidth="100">
<Control FieldName="System.AssignedTo" Type="FieldControl" Label="Assi&gned To" LabelPosition="Left" />
<Control Type="LabelControl" Label="State Order : 1.New 2.Approved 3.Committed 4.Done 5.Removed" LabelPosition="Left" />
<Control FieldName="System.State" Type="FieldControl" Label="Stat&e" LabelPosition="Left" />
<Control FieldName="System.Reason" Type="FieldControl" Label="Reason" LabelPosition="Left" ReadOnly="True" />
<Group>
<Column PercentWidth="12">
<Control Type="LabelControl" Label="Release #" LabelPosition="Left" />
</Column>
<Column PercentWidth="5">
<Control FieldName="MyCompany.ReleaseYear" Type="FieldControl" LabelPosition="Left" MinimumSize="(0,0)" />
</Column>
<Column PercentWidth="5">
<Control FieldName="MyCompany.MajorRelease" Type="FieldControl" LabelPosition="Left" MinimumSize="(0,0)" />
</Column>
<Column PercentWidth="5">
<Control Type="FieldControl" LabelPosition="Left" FieldName="MyCompany.MinorRelease" />
</Column>
<Column PercentWidth="5">
<Control FieldName="MyCompany.HotfixRelease" Type="FieldControl" LabelPosition="Left" />
</Column>
<Column PercentWidth="25">
<Control FieldName="MyCompany.HotfixSeverity" Type="FieldControl" LabelPosition="Left" />
</Column>
</Group>
</Column>
</Group>
</Column>
<Column PercentWidth="50">
<Group Label="Details">
<Column PercentWidth="100">
<Control FieldName="Microsoft.VSTS.Scheduling.Effort" Type="FieldControl" Label="Effort" LabelPosition="Left" />
<Control FieldName="Microsoft.VSTS.Common.BusinessValue" Type="FieldControl" Label="Business Value" LabelPosition="Left" />
<Control FieldName="System.AreaPath" Type="WorkItemClassificationControl" Label="&Area" LabelPosition="Left" />
<Control FieldName="MyCompany.SupportTicket" Type="FieldControl" Label="Support Ticket#" LabelPosition="Left" />
</Column>
</Group>
</Column>
</Group>
<Group>
<Column PercentWidth="50">
<TabGroup>
<Tab Label="Description">
<Control FieldName="System.Description" Type="HtmlFieldControl" Label="" LabelPosition="Top" Dock="Fill" />
</Tab>
<Tab Label="Storyboards">
<Control Type="LinksControl" Name="StoryboardsControl" LabelPosition="Top">
<LinksControlOptions>
<WorkItemLinkFilters FilterType="excludeAll" />
<ExternalLinkFilters FilterType="include">
<Filter LinkType="Storyboard" />
</ExternalLinkFilters>
<LinkColumns>
<LinkColumn RefName="System.Title" />
<LinkColumn LinkAttribute="System.Links.Comment" />
</LinkColumns>
</LinksControlOptions>
</Control>
</Tab>
<Tab Label="Test Cases">
<Control Type="LinksControl" Label="" LabelPosition="Top" Name="TestedBy">
<LinksControlOptions>
<LinkColumns>
<LinkColumn RefName="System.Id" />
<LinkColumn RefName="System.WorkItemType" />
<LinkColumn RefName="System.Title" />
<LinkColumn RefName="System.AssignedTo" />
<LinkColumn RefName="System.State" />
</LinkColumns>
<WorkItemLinkFilters FilterType="include">
<Filter LinkType="Microsoft.VSTS.Common.TestedBy" FilterOn="forwardname" />
</WorkItemLinkFilters>
<ExternalLinkFilters FilterType="excludeAll" />
<WorkItemTypeFilters FilterType="include">
<Filter WorkItemType="Test Case" />
</WorkItemTypeFilters>
</LinksControlOptions>
</Control>
</Tab>
<Tab Label="Tasks">
<Control Type="LinksControl" Name="Hierarchy" Label="" LabelPosition="Top">
<LinksControlOptions>
<LinkColumns>
<LinkColumn RefName="System.Id" />
<LinkColumn RefName="System.Title" />
<LinkColumn RefName="System.AssignedTo" />
<LinkColumn RefName="System.State" />
</LinkColumns>
<WorkItemLinkFilters FilterType="include">
<Filter LinkType="System.LinkTypes.Hierarchy" FilterOn="forwardname" />
</WorkItemLinkFilters>
<ExternalLinkFilters FilterType="excludeAll" />
<WorkItemTypeFilters FilterType="include">
<Filter WorkItemType="Task" />
</WorkItemTypeFilters>
</LinksControlOptions>
</Control>
</Tab>
</TabGroup>
</Column>
<Column PercentWidth="50">
<TabGroup Margin="(5,0,0,0)">
<Tab Label="Acceptance Criteria">
<Control FieldName="Microsoft.VSTS.Common.AcceptanceCriteria" Type="HtmlFieldControl" Label="" LabelPosition="Top" Dock="Fill" />
</Tab>
<Tab Label="History">
<Control FieldName="System.History" Type="WorkItemLogControl" Label="" LabelPosition="Top" Dock="Fill" />
</Tab>
<Tab Label="Links">
<Control Type="LinksControl" Name="GeneralLinks" LabelPosition="Top">
<LinksControlOptions>
<LinkColumns>
<LinkColumn RefName="System.Id" />
<LinkColumn RefName="System.WorkItemType" />
<LinkColumn RefName="System.Title" />
<LinkColumn RefName="System.AssignedTo" />
<LinkColumn RefName="System.State" />
<LinkColumn LinkAttribute="System.Links.Comment" />
</LinkColumns>
<WorkItemLinkFilters FilterType="includeAll" />
<ExternalLinkFilters FilterType="includeAll" />
<WorkItemTypeFilters FilterType="includeAll" />
</LinksControlOptions>
</Control>
</Tab>
<Tab Label="Attachments">
<Control Type="AttachmentsControl" Label="" LabelPosition="Top" />
</Tab>
<Tab Label="Other">
<Control FieldName="OldSystem.Common.ObjectId" Type="FieldControl" Label="OldSystem Object ID:" LabelPosition="Left" />
<Control FieldName="OldSystem.Common.FormattedId" Type="FieldControl" Label="OldSystem Formatted ID:" LabelPosition="Left" />
<Control FieldName="OldSystem.Common.Project" Type="FieldControl" Label="OldSystem Project:" LabelPosition="Left" />
<Control FieldName="OldSystem.Common.UpdateTime" Type="FieldControl" Label="OldSystem Update Time:" LabelPosition="Left" />
<Control FieldName="OldSystem.Common.Tags" Type="FieldControl" Label="OldSystemTags:" LabelPosition="Left" />
</Tab>
<Tab Label="SVN Commits">
<Control FieldName="MyCompany.SVNLog" Type="HtmlFieldControl" LabelPosition="Left" Dock="Fill" />
</Tab>
</TabGroup>
</Column>
</Group>
</Layout>
</FORM>
</WORKITEMTYPE>
</witd:WITD>
We created new TFS work item. After some time, we began to have issues with controls UI layout. (Screen shot is attached as an example). Spaces between controls are VERY big. If we re-run the query - everything becomes good. After another re-run, the layout again becomes corrupted.
The UI Layout is modified in the way as suggested with this answer: Is it possible to customize "History" tab for Bug/Task work item types?.
What is a reason of that and how to fix it?!
EDITED: layout was added
<FORM>
<Layout>
<Group Label="General" Margin="(1,1,1,1)">
<Column FixedWidth="100">
<Control FieldName="Custom.IssueType" Type="FieldControl" Label="Issue Type:" LabelPosition="Left" />
<Control FieldName="Custom.Priority" Type="FieldControl" Label="Priorit&y:" LabelPosition="Left" />
</Column>
<Column PercentWidth="100">
<Group Margin="(2,2,2,2)">
<Column PercentWidth="100">
<Control FieldName="System.Title" Type="FieldControl" Label="&Title:" LabelPosition="Left" />
</Column>
</Group>
<Group Margin="(2,2,2,2)">
<Column PercentWidth="50">
<Control FieldName="System.AreaPath" Type="WorkItemClassificationControl" Label="&Area:" LabelPosition="Left" />
</Column>
<Column PercentWidth="50">
<Control FieldName="System.IterationPath" Type="WorkItemClassificationControl" Label="&Iteration:" LabelPosition="Left" />
</Column>
</Group>
</Column>
</Group>
<Group Margin="(1,1,1,1)">
<Column PercentWidth="70">
<Group Label="Status" Margin="(1,1,1,1)">
<Column PercentWidth="50">
<Control FieldName="System.State" Type="FieldControl" Label="&State:" LabelPosition="Left" />
<Control FieldName="System.AssignedTo" Type="FieldControl" Label="Assi&gned to:" LabelPosition="Left" />
</Column>
<Column PercentWidth="50">
<Control FieldName="System.Reason" Type="FieldControl" Label="&Reason:" LabelPosition="Left" />
<Control FieldName="Custom.CustomerIssue" Type="FieldControl" Label="&Customer Issue:" LabelPosition="Left" />
</Column>
</Group>
</Column>
<Column FixedWidth="400">
<Group Label="Details" Margin="(1,1,1,1)">
<Column PercentWidth="50">
<Control FieldName="Custom.FoundInBuild" Type="FieldControl" Label="&Found in build:" LabelPosition="Left" />
<Control FieldName="Custom.ResolvedInBuild" Type="FieldControl" Label="Resolved in &build:" LabelPosition="Left" />
</Column>
<Column PercentWidth="50">
<Control FieldName="Custom.HelpAuthoring" Type="FieldControl" Label="Help Authoring:" LabelPosition="Left" />
<Control FieldName="Custom.RankInt" Type="FieldControl" Label="Ran&k:" LabelPosition="Left" NumberFormat="WholeNumbers" MaxLength="10" />
</Column>
</Group>
</Column>
</Group>
<TabGroup Margin="(1,1,1,1)">
<Tab Label="Content">
<Group>
<Column PercentWidth="50">
<Control FieldName="System.Description" Type="HtmlFieldControl" Label="Des&cription:" LabelPosition="Top" Dock="Fill" />
</Column>
<Column PercentWidth="50">
<Control FieldName="System.History" Type="WorkItemLogControl" Label="&History:" LabelPosition="Top" Dock="Fill" />
</Column>
</Group>
</Tab>
<Tab Label="Links">
<Control Type="LinksControl" LabelPosition="Top" />
</Tab>
<Tab Label="File Attachments">
<Control Type="AttachmentsControl" LabelPosition="Top" />
</Tab>
<Tab Label="Misc.">
<Group>
<Column PercentWidth="50">
<Group Label="">
<Column PercentWidth="50">
<Group Label="Estimated Time">
<Column PercentWidth="100">
<Control FieldName="Custom.EstimatedTimeTotal" Type="FieldControl" Label="Total:" LabelPosition="Left" />
<Control FieldName="Custom.EstimatedTimeLeft" Type="FieldControl" Label="Left:" LabelPosition="Left" />
</Column>
</Group>
</Column>
<Column PercentWidth="50">
<Group Label="Other">
<Column PercentWidth="100">
<Control FieldName="Custom.Localization" Type="FieldControl" Label="Localization:" LabelPosition="Left" />
<Control FieldName="Custom.Rebrand" Type="FieldControl" Label="Rebrand:" LabelPosition="Left" />
</Column>
</Group>
</Column>
</Group>
</Column>
</Group>
</Tab>
</TabGroup>
</Layout>
</FORM>
The one thing that comes to mind is in your FORM section of your Work Item definition XML, make sure that the Column sizes are set. We use PercentWidth="50" on the columns where we have description and history. I did note that we had a similar problem to what you had when I had neglected to set that.
If you're seeing this happen only on specific work items, it is probably related to size of data, or presence of data. Once you post the FORM section from the WorkItem, it will be easier to tell.
-- EDIT --
Looking at your FORM section shows a lot of mixing of FixedWidth and PercentWidth. I've noticed that this can really cause the display to get confused.
For Example, in your first Group (General), you have one column set to a fixed width of 100, and a second column set to a percentage width of 100%. Try setting each of these to PercentWidth="50".
Similar to your second group, where your first column (which contains the "Status" group) is set to 70% width, and the second column is set to a fixed width of 400.
I've noticed that the form renderer tends to have problems when these layout types are mixed.