DevOps migration tool: ArgumentNullException: Value cannot be null - azure-devops-migration-tools

I'm trying to migrate tickets from one org/project to an other org/project, but not with success at the moment.
I have tried to config it the correct way, but I guees I have filled it in correctly now (see below) and still I get the following error.
note: it looks like the 'Source Node Path StartsWith' in the log is not correct. We do not use (sub) Area's. Area should be: vdp-bam-gen.
I tried to leave out the LanguageMaps and also empty the value (AreaPath": ""). But I still get (other) errors.
NodeStructureEnricher.ProcessCommonStructure(Area, Area)
-Source Node Path StartsWith [\vdp-bam-gen\area]
Error while running WorkItemMigration
System.ArgumentNullException: Value cannot be null.
Parameter name: source
at System.Linq.Enumerable.Where[TSource](IEnumerable1 source, Func2 predicate)
I cannot copy my whole config, but here are some parts:
Version": "12.0",
"TelemetryEnableTrace": false,
"workaroundForQuerySOAPBugEnabled": false,
"Source": {
"$type": "TfsTeamProjectConfig",
"Collection": "https://a_url_of my project/",
"Project": "VDP-BAM-GEN",
"ReflectedWorkItemIDFieldName": "Custom.ReflectedWorkItemId",
"AllowCrossProjectLinking": false,
"AuthenticationMode": "Prompt",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
"Target": {
"$type": "TfsTeamProjectConfig",
"Collection": "https://a_url_of my project/",
"Project": "CIT-BAM-SOURCING-CUSTOMERS",
"ReflectedWorkItemIDFieldName": "Custom.ReflectedWorkItemId",
"AllowCrossProjectLinking": false,
"AuthenticationMode": "Prompt",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
"Processors": [
"$type": "WorkItemDeleteConfig",
"Enabled": true,
"QueryBit": "AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan', 'Epic', 'Feature', 'User Story','Bug','Inbox Item')",
"OrderBit": "[System.ChangedDate] desc"
,
"$type": "WorkItemMigrationConfig",
"ReplayRevisions": true,
"PrefixProjectToNodes": false,
"UpdateCreatedDate": false,
"UpdateCreatedBy": false,
"BuildFieldTable": false,
"AppendMigrationToolSignatureFooter": false,
"QueryBit": "AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan', 'Epic', 'Feature', 'User Story','Bug','Inbox Item')",
"OrderBit": "[System.ChangedDate] desc",
"Enabled": true,
"LinkMigration": true,
"AttachmentMigration": true,
"AttachmentWorkingPath": "c:\tmp\WorkItemAttachmentWorkingFolder",
"FixHtmlAttachmentLinks": false,
"SkipToFinalRevisedWorkItemType": false,
"WorkItemCreateRetryLimit": 5,
"FilterWorkItemsThatAlreadyExistInTarget": true,
"PauseAfterEachWorkItem": false,
"AttachmentMaxSize": 480000000,
"CollapseRevisions": false,
"LinkMigrationSaveEachAsAdded": false

Related

When migrating work items with links to a git repo in another project, links are not migrating

We are currently moving multiple projects between Azure Devops organizations by using the https://nkdagility.github.io/azure-devops-migration-tools/ tool.
A lot of work items that are being migrated have links to git repos (commits, branches) that are from another project within the same organization.
When the tool is running, it's not able to find the repo if it's in another project.
Example warning from when the tool is running:
GitRepositoryEnricher: Could not find source git repo - repo
referenced: xy/mn
Under the Development section on the work items that have this links the following comments shows:
Commit not found or no permission to access it.
All repos have been migrated before the work items and have the same names as in the source organization. I don't believe it's a permissions issue, as I can add the link manually.
Below is the config json file:
{
"ChangeSetMappingFile": null,
"Source": {
"$type": "TfsTeamProjectConfig",
"Collection": "https://dev.azure.com/sourceorg/",
"Project": "sourceproject",
"ReflectedWorkItemIDFieldName": "Custom.ReflectedWorkItemId",
"AllowCrossProjectLinking": true,
"AuthenticationMode": "Prompt",
"PersonalAccessToken": "PAT",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"Target": {
"$type": "TfsTeamProjectConfig",
"Collection": "https://dev.azure.com/targetorg/",
"Project": "targetproject",
"ReflectedWorkItemIDFieldName": "Custom.ReflectedWorkItemId",
"AllowCrossProjectLinking": true,
"AuthenticationMode": "Prompt",
"PersonalAccessToken": "",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"FieldMaps": [],
"GitRepoMapping": null,
"LogLevel": "Information",
"Processors": [
{
"$type": "WorkItemMigrationConfig",
"Enabled": true,
"ReplayRevisions": true,
"PrefixProjectToNodes": false,
"UpdateCreatedDate": true,
"UpdateCreatedBy": true,
"WIQLQueryBit": "AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan', 'Test Case')",
"WIQLOrderBit": "[System.ChangedDate] desc",
"LinkMigration": true,
"AttachmentMigration": true,
"AttachmentWorkingPath": "c:\\temp\\WorkItemAttachmentWorkingFolder\\",
"FixHtmlAttachmentLinks": true,
"SkipToFinalRevisedWorkItemType": true,
"WorkItemCreateRetryLimit": 5,
"FilterWorkItemsThatAlreadyExistInTarget": false,
"PauseAfterEachWorkItem": false,
"AttachmentMaxSize": 480000000,
"AttachRevisionHistory": false,
"LinkMigrationSaveEachAsAdded": false,
"GenerateMigrationComment": false,
"NodeBasePaths": [],
"WorkItemIDs": null
}
],
"Version": "11.11",
"workaroundForQuerySOAPBugEnabled": false,
"WorkItemTypeDefinition": {
"sourceWorkItemTypeName": "targetWorkItemTypeName"
}
}
Policies must be open equaly to allow the linkage, both projects (organizations as well) Must be part of the same Tenant.

Re-migrate a work item that has been deleted on target server

I'm starting to use the great ADO Migration Tool by MrHinsh.
I've succeeded to configure it as I want but I have some problem in a particular case : let's say I've migrate WI #67604 (TFS 2017) to WI #217 (ADO).
Then I've deleted the new WI (#217).
And I'm trying to run the migration tool again but I've an error
Microsoft.TeamFoundation.WorkItemTracking.Client.ValidationException: TF237124: l'élément de travail n'est pas prêt à être enregistré
I've tried to restore it from the bin, it works now. I've tried to permanently delete it, same error.
I've tried to remove the ReflectedWorkItemIDFieldName in the source WI on TFS but I'm unable to find the field...
Here is my config file :
{
"ChangeSetMappingFile": null,
"Source": {
"$type": "TfsTeamProjectConfig",
"Collection": "XXX",
"Project": "TEST1",
"ReflectedWorkItemIDFieldName": "Custom.ReflectedWorkItemId",
"AllowCrossProjectLinking": false,
"AuthenticationMode": "Prompt",
"PersonalAccessToken": "aaaa",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"Target": {
"$type": "TfsTeamProjectConfig",
"Collection": "YYY",
"Project": "TEST2",
"ReflectedWorkItemIDFieldName": "Custom.ReflectedWorkItemId",
"AllowCrossProjectLinking": false,
"AuthenticationMode": "Prompt",
"PersonalAccessToken": "yyyy",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"FieldMaps": [],
"GitRepoMapping": null,
"LogLevel": "Information",
"Processors": [
{
"$type": "WorkItemMigrationConfig",
"Enabled": true,
"ReplayRevisions": true,
"PrefixProjectToNodes": true,
"UpdateCreatedDate": true,
"UpdateCreatedBy": true,
"WIQLQueryBit": "AND ID = 69949 OR ID = 67604",
"WIQLOrderBit": "[System.ChangedDate] desc",
"LinkMigration": true,
"AttachmentMigration": true,
"AttachmentWorkingPath": "c:\\temp\\WorkItemAttachmentWorkingFolder\\",
"FixHtmlAttachmentLinks": true,
"SkipToFinalRevisedWorkItemType": true,
"WorkItemCreateRetryLimit": 5,
"FilterWorkItemsThatAlreadyExistInTarget": true,
"PauseAfterEachWorkItem": false,
"AttachmentMaxSize": 480000000,
"AttachRevisionHistory": false,
"LinkMigrationSaveEachAsAdded": false,
"GenerateMigrationComment": true,
"NodeStructureEnricherEnabled": null,
"NodeBasePaths": [],
"WorkItemIDs": null,
"MaxRevisions": 0
}
],
"Version": "11.11",
"workaroundForQuerySOAPBugEnabled": false,
"WorkItemTypeDefinition": {
"sourceWorkItemTypeName": "targetWorkItemTypeName"
},
"Endpoints": {
"InMemoryWorkItemEndpoints": [
{
"Name": "Source",
"EndpointEnrichers": null
},
{
"Name": "Target",
"EndpointEnrichers": null
}
]
}
}
Enabling "LogLevel" to "Debug" helps me find the problem and it was a mistake in the config file...
Now I can migrate, sync and if I delete WI in target DevOps collection I can migrate it again.
Everything's fine !

Migration of Work Items from TFS 2018 to Azure DevOps 2020 fails to migrate links between Work Items

I am exploring different possibilities to move our organisations Work Items from a TFS 2018 (v. 16.131.28507.4) to Azure DevOps 2020 (v. Dev18.M170.6). with Azure DevOps Migration Tools.
I am now struggling with parts of the migration tools (v. 11.11)
All Work Items do copy to the target environment, the iterations and areas are in place as well as the teams and team areas. The field "ReflectedWorkItemId" is also updated correctly in my target.
But looking in Azure, not one work item in the target environment has any links to its children or parents. In the migration tools logs there's a lot of warnings which I guess are related to my problem.
"[SKIP] [LINK_CAPTURE_RELATED] [RegisteredLinkType] target not found. wiSourceL=38673, wiSourceR=null, wiTargetL=12410"
The parent and the children WI's is present in Azure with but I am guessing I am missing something in the configuration.
In my source I am using the project type "Agile". In my target I've created an inherited project from Agile (with name "OrgAgile" to be able to add the "ReflectedWorkItemId" field in the process templates. Can that be an issue?
I see one issue have been posted on the tools GitHub (https://github.com/nkdAgility/azure-devops-migration-tools/issues/964) and I've posted a question there myself but no answers yet so I thought I try here. It could be a bug, but I want to make sure I haven't done the configuration wrong.
Below is the configuration.json. Perhaps I've removed/missed configuration from the default file that is crucial for a correct link migration or have redundant/conflicting parts in it.
Any help, pointers or roasts is most welcome.
configuration.json
{
"Version": "11.11",
"workaroundForQuerySOAPBugEnabled": false,
"GitRepoMapping": null,
"LogLevel": "Information",
"Source": {
"$type": "TfsTeamProjectConfig",
"Collection": "http://<sourceServer>/DefaultCollection",
"Project": "<sourceProject>",
"ReflectedWorkItemIDFieldName": "TfsMigrationTool.ReflectedWorkItemId2",
"AllowCrossProjectLinking": false,
"AuthenticationMode": "Prompt",
"PersonalAccessToken": "",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"Target": {
"$type": "TfsTeamProjectConfig",
"Collection": "http://<targetServer>/DefaultCollection",
"Project": "<targetProject>",
"ReflectedWorkItemIDFieldName": "ReflectedWorkItemId",
"AllowCrossProjectLinking": false,
"AuthenticationMode": "Prompt",
"PersonalAccessToken": "",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"Processors": [
{
"$type": "TfsAreaAndIterationProcessorOptions",
"Enabled": true,
"PrefixProjectToNodes": false,
"NodeBasePaths": null,
"ProcessorEnrichers": null,
"SourceName": "IterationSettingsSource",
"TargetName": "IterationSettingsTarget"
},
{
"$type": "TfsTeamSettingsProcessorOptions",
"Enabled": true,
"MigrateTeamSettings": true,
"UpdateTeamSettings": true,
"PrefixProjectToNodes": false,
"Teams": null,
"ProcessorEnrichers": null,
"SourceName": "TeamSettingsSource",
"TargetName": "TeamSettingsTarget"
},
{
"$type": "WorkItemMigrationConfig",
"Enabled": true,
"ReplayRevisions": true,
"PrefixProjectToNodes": false,
"UpdateCreatedDate": true,
"UpdateCreatedBy": true,
"BuildFieldTable": false,
"AppendMigrationToolSignatureFooter": false,
"WIQLQueryBit": "AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan', 'Shared Steps', 'Shared Parameter', 'Test Case')",
"WIQLOrderBit": "[System.ChangedDate] desc",
"LinkMigration": true,
"AttachmentMigration": false,
"AttachmentWorkingPath": "c:\\temp\\WorkItemAttachmentWorkingFolder\\",
"FixHtmlAttachmentLinks": false,
"SkipToFinalRevisedWorkItemType": true,
"WorkItemCreateRetryLimit": 5,
"FilterWorkItemsThatAlreadyExistInTarget": true,
"PauseAfterEachWorkItem": false,
"AttachmentMaxSize": 480000000,
"AttachRevisionHistory": false,
"LinkMigrationSaveEachAsAdded": false,
"GenerateMigrationComment": true,
"NodeBasePaths": [],
"WorkItemIDs": null,
"MaxRevisions": 5
}
],
"Endpoints": {
"TfsEndpoints": [
{
"Name": "IterationSettingsSource",
"AccessToken": "",
"Organisation": "http://<sourceServer>/DefaultCollection",
"Project": "<sourceProject>",
"ReflectedWorkItemIdField": "TfsMigrationTool.ReflectedWorkItemId",
"AuthenticationMode": "Prompt",
"AllowCrossProjectLinking": false,
"LanguageMaps": {
"Area": "Area",
"Iteration": "Iteration"
}
},
{
"Name": "IterationSettingsTarget",
"AccessToken": "",
"Organisation": "http://<targetServer>/DefaultCollection",
"Project": "<targetProject>",
"ReflectedWorkItemIdField": "ReflectedWorkItemId",
"AuthenticationMode": "Prompt",
"AllowCrossProjectLinking": false,
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
}
],
"TfsTeamSettingsEndpoints": [
{
"Name": "TeamSettingsSource",
"AccessToken": "",
"Organisation": "http://<sourceServer>/DefaultCollection",
"Project": "<sourceProject>",
"ReflectedWorkItemIdField": "TfsMigrationTool.ReflectedWorkItemId",
"AuthenticationMode": "Prompt",
"AllowCrossProjectLinking": false,
"LanguageMaps": {
"Area": "Area",
"Iteration": "Iteration"
}
},
{
"Name": "TeamSettingsTarget",
"AccessToken": "",
"Organisation": "http://<targetServer>/DefaultCollection",
"Project": "<targetProject>",
"ReflectedWorkItemIdField": "ReflectedWorkItemId",
"AuthenticationMode": "Prompt",
"AllowCrossProjectLinking": false,
"LanguageMaps": {
"AreaPath": "Area",
"Iteration": "Iteration"
}
}
]
}
}
This was probably caused by a bug.
Discussion and possible solution is found here:
https://github.com/nkdAgility/azure-devops-migration-tools/issues/964

Mapping of a field with date change the date on target

I'm trying to map the field with date, but on the target the date is changed to previous date.
On the source:
Integration Date: 30.11.2019 00:00
On the target:
Integration Date: 29.11.2019 23:00
I was trying also with Regexp mapping, just to map the date, but was not able to make it working. Below there is my configuration. It's a migration from Azure Devops Services to Azure Devops Services.
{
"ChangeSetMappingFile": null,
"Source": {
"$type": "TfsTeamProjectConfig",
"Collection": "https://dev.azure.com/XXX",
"Project": "Reach CSA",
"ReflectedWorkItemIDFieldName": "ReflectedWorkItemId",
"AllowCrossProjectLinking": true,
"AuthenticationMode": "Prompt",
"PersonalAccessToken": "XXX",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"Target": {
"$type": "TfsTeamProjectConfig",
"Collection": "https://dev.azure.com/XXX",
"Project": "ReachCSA-Migration-DryRun",
"ReflectedWorkItemIDFieldName": "ReflectedWorkItemId",
"AllowCrossProjectLinking": true,
"AuthenticationMode": "Prompt",
"PersonalAccessToken": "XXX",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"GitRepoMapping": null,
"LogLevel": "Verbose",
"FieldMaps": [
{
"$type": "FieldtoFieldMultiMapConfig",
"WorkItemTypeName": "*",
"SourceToTargetMappings": {
"CSAReach.Rationale": "Rationale",
"System.Reason": "ReachCSA_Reason",
"CSAReach.TargetRelease": "ReachCSA Target Release",
"CSAReach.Source": "ReachCSA_Origin_Source",
"CSAReach.Contact1": "Contact 1",
"CSAReach.Contact2": "Contact 2",
"CSAReach.Contact3": "Contact 3",
"Microsoft.VSTS.Common.Priority": "ReachCSA_Priority",
"CSAReach.RequirementType": "ReachCSA_Type",
"CSAReach.Target": "Target Platform",
"CSAReach.IntegrationDate": "Integration Date",
"CSAReach.MarketDate": "Market Date"
}
},
{
"$type": "FieldtoFieldMultiMapConfig",
"WorkItemTypeName": "Query",
"SourceToTargetMappings": {
"CSAReach.SystemInfo": "System Information",
"Microsoft.VSTS.TCM.ReproSteps": "Steps to Reproduce",
"System.Reason": "ReachCSA_Reason",
"CSAReach.Source": "ReachCSA_Origin_Source",
"CSAReach.Contact1": "Contact 1",
"CSAReach.Contact2": "Contact 2",
"CSAReach.Contact3": "Contact 3",
"Microsoft.VSTS.Common.Priority": "ReachCSA_Severity",
"CSAReach.Target": "Target Platform",
"CSAReach.DueDate": "Due Date",
"CSAReach.FoundInRelease": "CSA Release"
}
}
],
"Processors": [
{
"$type": "WorkItemMigrationConfig",
"Enabled": true,
"ReplayRevisions": true,
"PrefixProjectToNodes": false,
"UpdateCreatedDate": true,
"UpdateCreatedBy": true,
"BuildFieldTable": false,
"AppendMigrationToolSignatureFooter": false,
"WIQLQueryBit": "AND [System.Id] IN ('42249')",
"WIQLOrderBit": "[System.ChangedDate] desc",
"LinkMigration": true,
"AttachmentMigration": true,
"AttachmentWorkingPath": "D:\\Workspaces\\projects\\PG-CT migration\\ReachCSA\\attachments\\",
"FixHtmlAttachmentLinks": false,
"SkipToFinalRevisedWorkItemType": true,
"WorkItemCreateRetryLimit": 5,
"FilterWorkItemsThatAlreadyExistInTarget": true,
"PauseAfterEachWorkItem": false,
"AttachmentMaxSize": 480000000,
"CollapseRevisions": false,
"LinkMigrationSaveEachAsAdded": false,
"GenerateMigrationComment": true
}
],
"Version": "11.9",
"workaroundForQuerySOAPBugEnabled": false,
"WorkItemTypeDefinition": {
"sourceWorkItemTypeName": "targetWorkItemTypeName"
}
}
Thanks for any help!
OK, got the issue here. It's time settings between the azure organization (UTC) and my profile. The profile needs to be set to my local timezone.

Is There Sample Test Plan Migration Config for Version 11.5?

Is There Sample Test Plan Migration Config for Version 11.5?
I was able to migrated all test cases, but now want to re-create the test plans.
For older version (like version 10), I was able to use below config to re-create the test plans after migrating all test cases:
"Processors": [
{
"ObjectType": "MigrationTools.Core.Configuration.Processing.NodeStructuresMigrationConfig",
"PrefixProjectToNodes": false,
"Enabled": true,
"BasePaths": []
},
{
"Enabled": true,
"ObjectType": "MigrationTools.Core.Configuration.Processing.TestVariablesMigrationConfig"
},
{
"Enabled": true,
"ObjectType": "MigrationTools.Core.Configuration.Processing.TestConfigurationsMigrationConfig"
},
{
"Enabled": true,
"ObjectType": "MigrationTools.Core.Configuration.Processing.TestPlansAndSuitesMigrationConfig",
"PrefixProjectToNodes": false,
"OnlyElementsWithTag": null,
"RemoveInvalidTestSuiteLinks": true
}
]
However, I am now getting an exception.
[22:32:54 INF] Config Found, creating engine host
[22:32:55 ERR] An Unhandled exception occured.
System.ArgumentNullException: Value cannot be null.
Parameter name: type
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at MigrationTools.Configuration.ProcessorConfigJsonConverter.Create(Type objectType, JObject jObject) in D:\a\1\s\src\MigrationTools\Configuration\ProcessorConfigJsonConverter.cs:line 14
I migrated all test cases using below config:
"Processors": [
{
"ObjectType": "WorkItemMigrationConfig",
"ReplayRevisions": true,
"PrefixProjectToNodes": false,
"UpdateCreatedDate": true,
"UpdateCreatedBy": true,
"BuildFieldTable": false,
"AppendMigrationToolSignatureFooter": false,
"WIQLQueryBit": "AND [System.WorkItemType] IN ('Test Case')",
"WIQLOrderBit": "[System.ChangedDate] desc",
"Enabled": true,
"LinkMigration": true,
"AttachmentMigration": true,
"AttachmentWorkingPath": "c:\\temp\\WorkItemAttachmentWorkingFolder\\",
"FixHtmlAttachmentLinks": false,
"SkipToFinalRevisedWorkItemType": false,
"WorkItemCreateRetryLimit": 5,
"FilterWorkItemsThatAlreadyExistInTarget": true,
"PauseAfterEachWorkItem": false,
"AttachmentMaxSize": 480000000,
"CollapseRevisions": false,
"LinkMigrationSaveEachAsAdded": false,
"NodeBasePaths": [],
"WorkItemIDs": null
}
Can someone please provide some insight?
Thanks,
Dennis
We are constantly making changes to the tool and when we bump the version number for major or minor it means we have changes something that impacts the configuration.json. In order to simplify the migration.exe init we reduced the output to just that necessary to migrate work items, the most common usage.
If you run migration.exe init --options Full it will give you the complete configuration options that are available.
For example here is the config from v11.6.
{
"Version": "11.6",
"workaroundForQuerySOAPBugEnabled": false,
"WorkItemTypeDefinition": {
"sourceWorkItemTypeName": "targetWorkItemTypeName"
},
"ChangeSetMappingFile": null,
"Source": {
"ObjectType": "TeamProjectConfig",
"Collection": "https://dev.azure.com/nkdagility-preview/",
"Project": "myProjectName",
"ReflectedWorkItemIDFieldName": "Custom.ReflectedWorkItemId",
"AllowCrossProjectLinking": false,
"PersonalAccessToken": "",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"Target": {
"ObjectType": "TeamProjectConfig",
"Collection": "https://dev.azure.com/nkdagility-preview/",
"Project": "myProjectName",
"ReflectedWorkItemIDFieldName": "Custom.ReflectedWorkItemId",
"AllowCrossProjectLinking": false,
"PersonalAccessToken": "",
"LanguageMaps": {
"AreaPath": "Area",
"IterationPath": "Iteration"
}
},
"FieldMaps": [
{
"ObjectType": "MultiValueConditionalMapConfig",
"WorkItemTypeName": "*",
"sourceFieldsAndValues": {
"Field1": "Value1",
"Field2": "Value2"
},
"targetFieldsAndValues": {
"Field1": "Value1",
"Field2": "Value2"
}
},
{
"ObjectType": "FieldBlankMapConfig",
"WorkItemTypeName": "*",
"targetField": "TfsMigrationTool.ReflectedWorkItemId"
},
{
"ObjectType": "FieldValueMapConfig",
"WorkItemTypeName": "*",
"sourceField": "System.State",
"targetField": "System.State",
"defaultValue": "New",
"valueMapping": {
"Approved": "New",
"New": "New",
"Committed": "Active",
"In Progress": "Active",
"To Do": "New",
"Done": "Closed",
"Removed": "Removed"
}
},
{
"ObjectType": "FieldtoFieldMapConfig",
"WorkItemTypeName": "*",
"sourceField": "Microsoft.VSTS.Common.BacklogPriority",
"targetField": "Microsoft.VSTS.Common.StackRank",
"defaultValue": null
},
{
"ObjectType": "FieldtoFieldMultiMapConfig",
"WorkItemTypeName": "*",
"SourceToTargetMappings": {
"SourceField1": "TargetField1",
"SourceField2": "TargetField2"
}
},
{
"ObjectType": "FieldtoTagMapConfig",
"WorkItemTypeName": "*",
"sourceField": "System.State",
"formatExpression": "ScrumState:{0}"
},
{
"ObjectType": "FieldMergeMapConfig",
"WorkItemTypeName": "*",
"sourceField1": "System.Description",
"sourceField2": "Microsoft.VSTS.Common.AcceptanceCriteria",
"targetField": "System.Description",
"formatExpression": "{0} <br/><br/><h3>Acceptance Criteria</h3>{1}",
"doneMatch": "##DONE##"
},
{
"ObjectType": "RegexFieldMapConfig",
"WorkItemTypeName": "*",
"sourceField": "COMPANY.PRODUCT.Release",
"targetField": "COMPANY.DEVISION.MinorReleaseVersion",
"pattern": "PRODUCT \\d{4}.(\\d{1})",
"replacement": "$1"
},
{
"ObjectType": "FieldValuetoTagMapConfig",
"WorkItemTypeName": "*",
"sourceField": "Microsoft.VSTS.CMMI.Blocked",
"pattern": "Yes",
"formatExpression": "{0}"
},
{
"ObjectType": "TreeToTagMapConfig",
"WorkItemTypeName": "*",
"toSkip": 3,
"timeTravel": 1
}
],
"GitRepoMapping": null,
"LogLevel": "Information",
"Processors": [
{
"ObjectType": "WorkItemMigrationConfig",
"ReplayRevisions": true,
"PrefixProjectToNodes": false,
"UpdateCreatedDate": true,
"UpdateCreatedBy": true,
"BuildFieldTable": false,
"AppendMigrationToolSignatureFooter": false,
"WIQLQueryBit": "AND [Microsoft.VSTS.Common.ClosedDate] = '' AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan')",
"WIQLOrderBit": "[System.ChangedDate] desc",
"Enabled": false,
"LinkMigration": true,
"AttachmentMigration": true,
"AttachmentWorkingPath": "c:\\temp\\WorkItemAttachmentWorkingFolder\\",
"FixHtmlAttachmentLinks": false,
"SkipToFinalRevisedWorkItemType": false,
"WorkItemCreateRetryLimit": 5,
"FilterWorkItemsThatAlreadyExistInTarget": true,
"PauseAfterEachWorkItem": false,
"AttachmentMaxSize": 480000000,
"CollapseRevisions": false,
"LinkMigrationSaveEachAsAdded": false,
"GenerateMigrationComment": true,
"NodeBasePaths": [
"Product\\Area\\Path1",
"Product\\Area\\Path2"
],
"WorkItemIDs": null
},
{
"ObjectType": "TestVariablesMigrationConfig",
"Enabled": false
},
{
"ObjectType": "TestConfigurationsMigrationConfig",
"Enabled": false
},
{
"ObjectType": "TestPlansAndSuitesMigrationConfig",
"PrefixProjectToNodes": false,
"Enabled": false,
"OnlyElementsWithTag": null,
"TestPlanQueryBit": null,
"RemoveInvalidTestSuiteLinks": false,
"FilterCompleted": false
},
{
"ObjectType": "ImportProfilePictureConfig",
"Enabled": false
},
{
"ObjectType": "ExportProfilePictureFromADConfig",
"Domain": null,
"Username": null,
"Password": null,
"PictureEmpIDFormat": null,
"Enabled": false
},
{
"ObjectType": "FixGitCommitLinksConfig",
"TargetRepository": "targetProjectName",
"Enabled": false,
"QueryBit": null,
"OrderBit": null
},
{
"ObjectType": "WorkItemUpdateConfig",
"WhatIf": false,
"Enabled": false,
"WIQLQueryBit": "AND [TfsMigrationTool.ReflectedWorkItemId] = '' AND [Microsoft.VSTS.Common.ClosedDate] = '' AND [System.WorkItemType] IN ('Shared Steps', 'Shared Parameter', 'Test Case', 'Requirement', 'Task', 'User Story', 'Bug')",
"WIQLOrderBit": null,
"WorkItemIDs": null,
"FilterWorkItemsThatAlreadyExistInTarget": false,
"PauseAfterEachWorkItem": false,
"WorkItemCreateRetryLimit": 0
},
{
"ObjectType": "WorkItemPostProcessingConfig",
"WorkItemIDs": [
1,
2,
3
],
"Enabled": false,
"WIQLQueryBit": "AND [TfsMigrationTool.ReflectedWorkItemId] = '' ",
"WIQLOrderBit": null,
"FilterWorkItemsThatAlreadyExistInTarget": false,
"PauseAfterEachWorkItem": false,
"WorkItemCreateRetryLimit": 0
},
{
"ObjectType": "WorkItemDeleteConfig",
"Enabled": false,
"WIQLQueryBit": "AND [Microsoft.VSTS.Common.ClosedDate] = '' AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan')",
"WIQLOrderBit": "[System.ChangedDate] desc",
"WorkItemIDs": null,
"FilterWorkItemsThatAlreadyExistInTarget": false,
"PauseAfterEachWorkItem": false,
"WorkItemCreateRetryLimit": 0
},
{
"ObjectType": "WorkItemQueryMigrationConfig",
"PrefixProjectToNodes": false,
"SharedFolderName": "Shared Queries",
"SourceToTargetFieldMappings": {
"SourceFieldRef": "TargetFieldRef"
},
"Enabled": false
},
{
"ObjectType": "TeamMigrationConfig",
"Enabled": false,
"PrefixProjectToNodes": false,
"EnableTeamSettingsMigration": true
}
]
}