Java codes are converted to XML after restarting Android studio - android-studio-3.0

I faced a real strange scenario when after I restarted my PC due to freezing of windows some of my java codes in the Android Studio were converted to some strange xml codes and all those codes I written were lost! I faced this situation twice, the first time I faced this scenario, I reverted my code to last commit since the changes were very little after the last commit.
However this time the changes are huge after the last commit and I am completely perplexed!
The below is how one of my small code was converted.
<component name="libraryTable">
<library name="Gradle: com.android.support:print:28.0.0#aar">
<ANNOTATIONS>
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/print-28.0.0.aar/87cddf7f66cc3e6d635cf04e7292a008/annotations.zip!/" />
</ANNOTATIONS>
<CLASSES>
<root url="file://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/print-28.0.0.aar/87cddf7f66cc3e6d635cf04e7292a008/res" />
<root url="jar://$USER_HOME$/.gradle/caches/transforms-1/files-1.1/print-28.0.0.aar/87cddf7f66cc3e6d635cf04e7292a008/jars/classes.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
My Android Studio version: 3.3.1
Is there any way to get back the code I wrote?
Any help would be appreciated.
EDIT
I faced again the same situation. Here is one of my another code replaced with xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AndroidConfiguredLogFilters">
<filters>
<filter>
<option name="logLevel" value="verbose" />
<option name="logMessagePattern" value="" />
<option name="logTagPattern" value="(MainActivity|Download|BooksFrag|Reading|BookPage|BookDetails|PageNumberPicker)" />
<option name="name" value="Unnamed-0" />
<option name="packageNamePattern" value="" />
<option name="pid" value="" />
</filter>
</filters>
</component>
<component name="AndroidLayouts">
<shared>
<config />
</shared>
</component>
<component name="AndroidLogFilters">
<option name="TOOL_WINDOW_CONFIGURED_FILTER" value="Unnamed-0" />
</component>
<component name="ChangeListManager">
<list default="true" id="0218df07-b316-45c7-a2ad-66ba2c0b4c43" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/utilities/RealmDBHelper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/BookSearchResultsContainer.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/BookSearchResultsContainer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/BookSearcher.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/BookSearcher.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/SearchOptions.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/SearchOptions.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/SearchResult.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/SearchResult.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/SearchResultViewHolder.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/SearchResultViewHolder.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/activities/ReadingActivity.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/activities/ReadingActivity.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/utilities/ArabicUtilities.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/sed/maktaba_daar_al_hadeeth/utilities/ArabicUtilities.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ExternalProjectsManager">
<system id="GRADLE">
<state>
<projects_view />
</state>
</system>
</component>
<component name="FUSProjectUsageTrigger">
<session id="1042793738">
<usages-collector id="statistics.lifecycle.project">
<counts>
<entry key="project.closed" value="23" />
<entry key="project.open.time.12" value="2" />
<entry key="project.open.time.13" value="2" />
<entry key="project.open.time.14" value="1" />
<entry key="project.open.time.15" value="3" />
<entry key="project.open.time.16" value="1" />
<entry key="project.open.time.17" value="1" />
<entry key="project.open.time.18" value="2" />
<entry key="project.open.time.2" value="1" />
<entry key="project.open.time.21" value="1" />
<entry key="project.open.time.22" value="1" />
<entry key="project.open.time.24" value="1" />
<entry key="project.open.time.25" value="2" />
<entry key="project.open.time.26" value="2" />
<entry key="project.open.time.27" value="5" />
<entry key="project.open.time.28" value="1" />
<entry key="project.open.time.29" value="1" />
<entry key="project.open.time.3" value="1" />
<entry key="project.open.time.30" value="1" />
<entry key="project.open.time.31" value="1" />
<entry key="project.open.time.32" value="1" />
<entry key="project.open.time.36" value="1" />
<entry key="project.open.time.4" value="1" />
<entry key="project.open.time.46" value="1" />
<entry key="project.open.time.49" value="1" />
<entry key="project.open.time.5" value="2" />
<entry key="project.open.time.50" value="1" />
<entry key="project.open.time.51" value="1" />
<entry key="project.open.time.6" value="2" />
<entry key="project.open.time.7" value="1" />
<entry key="project.open.time.8" value="2" />
<entry key="project.opened" value="44" />
</counts>
</usages-collector>
<usages-collector id="statistics.file.extensions.open">
<counts>
<entry key="MF" value="1" />
<entry key="css" value="4" />
<entry key="csv" value="11" />
<entry key="gradle" value="14" />
<entry key="java" value="298" />
<entry key="js" value="19" />
I logged an issue with Google here.
Thanks.
EDIT (Nov 2019)
I faced this in android studio 3.5.2 as well. It seems the issue is not fixed yet.

dont worry!
Go to android studio folder located in Users/user/.androidstudiov.x.x
And delete your cache and restart android studio. This problem happened to me a couple of days ago, right after I upgraded to the new version. Even XML and java classes will have this. However all your data is safe.
A bug in android studio, importing settings..

Related

typo3 double quotes in hash __trustedProperties 'The HMAC of the form could not be validated.'

thank you for your support.
I created a form with select options. The fields are filled with arrays provided with the settings variable.
The field in __trustedProperties quoted with the "-sign. This results in "{" as hash.
[__trustedProperties]" value="{"newRfichip":{"id":1,"status":1,"location":1,"personid":1}}2ec7e718db7f0844040e31baaa69a8452a650302" />
Normaly there should be & quot; instead the "-sign.
[__trustedProperties]" value="{& quot;newRfichip& quot;:{& quot;id& quot;:1,& quot;status& quot;:1,& quot;location& quot;:1,& quot;personid& quot;:1}}2ec7e718db7f0844040e31baaa69a8452a650302" />
I get always an exception 'The HMAC of the form could not be validated.'
I'm grateful for every hint, how i can solve this problem
FormFields.html
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<label for="id">
<f:translate key="tx_bbaorfichip_domain_model_rfichip.id" />
</label><br />
<f:form.textfield property="id" id="id" /><br />
<br\>
<f:debug>{_all}</f:debug>
<f:debug>{__trustedProperties}</f:debug>
<br\>
<label for="status">
<f:translate key="tx_bbaorfichip_domain_model_rfichip.status" />
</label><br />
<f:form.select property="status" id="status"
options="{settings.stati}"
value="4"
optionValueField="status"
optionLabelField="status" />
<br />
<label for="location">
<f:translate key="tx_bbaorfichip_domain_model_rfichip.location" />
</label><br />
<f:form.select property="location" id="location"
options="{settings.location}"
value="4"
optionValueField="location"
optionLabelField="location" />
<br />
<label for="personid">
<f:translate key="tx_bbaorfichip_domain_model_rfichip.personid" />
</label><br />
<f:form.select property="personid" id="personid"
options="{settings.personid}"
optionValueField="personid"
optionLabelField="personid" />
<br />
</html>

Add Additional Columns to Links Page (TFS 2018)

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>

Sideloading Issue with OfficeJS Outlook Add-in on iOS

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.

TFS wit field width different in VS2015 and Web UI

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>

TFS: how to add 'text name' for priority

Is there any possibility to add text into priorities? It would be good to have values like "1 - Blocker", "2 - Critical", "3 - High", ... etc.
Attempt to change "ALLOWEDVALUES" of "Priority" field (refname="Microsoft.VSTS.Common.Priority") to something like
<ALLOWEDVALUES>
<LISTITEM value="1 - Blocker" />
<LISTITEM value="2 - Critical" />
<LISTITEM value="3 - High" />
<LISTITEM value="4..." />
<LISTITEM value="5..." />
<LISTITEM value="6..." />
</ALLOWEDVALUES>
Give an error that field should be integer.
I see few options:
1. change field type to string
2. create a separate custom field "MyPriority" with 'string' type.
Could you please advise what is the best option (from long term usage perspective)?
Thanks a lot!
You cannot change the type of an existing field. What I did in the past is adding a new field which is shown on the form. Then Add some logic to the field to copy
Add the following text to the FIELDS section
<FIELD name="My Priority" refname="My.Priority" type="String" reportable="dimension">
<REQUIRED />
<ALLOWEDVALUES>
<LISTITEM value="1 - Blocker" />
<LISTITEM value="2 - Critical" />
<LISTITEM value="3 - High" />
<LISTITEM value="4..." />
<LISTITEM value="5..." />
<LISTITEM value="6..." />
</ALLOWEDVALUES>
<DEFAULT from="value" value="3 - High" />
</FIELD>
And change the default priority field to
<FIELD name="Priority" refname="Microsoft.VSTS.Common.Priority" type="Integer" reportable="dimension">
<REQUIRED />
<ALLOWEDVALUES>
<LISTITEM value="1" />
<LISTITEM value="2" />
<LISTITEM value="3" />
<LISTITEM value="4" />
</ALLOWEDVALUES>
<DEFAULT from="value" value="2" />
<WHEN field="My.Priority" value="1 - Blocker">
<COPY from="value" value="1" />
</WHEN>
<WHEN field="My.Priority" value="2 - Critical">
<COPY from="value" value="2" />
</WHEN>
<WHEN field="My.Priority" value="3 - High">
<COPY from="value" value="3" />
</WHEN>
<WHEN field="My.Priority" value="4...">
<COPY from="value" value="4" />
</WHEN>
</FIELD>
Locate the Priority in the FORMS section and change it to use the My.Priority:
<Control Type="FieldControl" FieldName="My.Priority" Label="Pri&ority:" LabelPosition="Left" />
I dont think you can change type of an existing field. So 2nd option is the only option. In my company I have customized work item types extensively and have used quite a few custom fields. It works well. Having said that, you will need to load your new field with existing priority data (if there is any).
A simple stored proc to copy data from Microsoft.VSTS.Common.Priority field to "New custom field" should do the job. WorkItemsLatestUsed table should be the only table touched for this purpose.

Resources