Skip to content

Commit

Permalink
Tweeks to TfsUserMappingEnricher
Browse files Browse the repository at this point in the history
  • Loading branch information
MrHinsh committed Mar 7, 2024
1 parent 6b3acee commit cc61094
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 19 deletions.
10 changes: 6 additions & 4 deletions configuration.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,11 @@
"$type": "TfsNodeStructureOptions",
"NodeBasePaths": [],
"AreaMaps": {
"^nkdProducts([\\\\]?.*)$": "MigrationTest5$1",
"^Skypoint Cloud$": "MigrationTest5"
},
"IterationMaps": {
"^nkdProducts([\\\\]?.*)$": "MigrationTest5$1",
"^Skypoint Cloud\\\\Sprint 1$": "MigrationTest5\\Sprint 1"
},
"ShouldCreateMissingRevisionPaths": true,
Expand Down Expand Up @@ -93,10 +95,10 @@
"Processors": [
{
"$type": "WorkItemMigrationConfig",
"Enabled": false,
"Enabled": true,
"UpdateCreatedDate": true,
"UpdateCreatedBy": true,
"WIQLQuery": "SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = @TeamProject AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan','Shared Steps','Shared Parameter','Feedback Request') ORDER BY [System.ChangedDate] desc",
"WIQLQuery": "SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = @TeamProject AND [System.WorkItemType] NOT IN ('Program', 'Portfolio', 'Test Suite', 'Test Plan','Shared Steps','Shared Parameter','Feedback Request') ORDER BY [System.ChangedDate] desc",
"LinkMigration": true,
"FixHtmlAttachmentLinks": false,
"SkipToFinalRevisedWorkItemType": false,
Expand All @@ -113,8 +115,8 @@
},
{
"$type": "ExportUsersForMappingConfig",
"Enabled": true,
"WIQLQuery": "SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = @TeamProject AND [System.WorkItemType] NOT IN ('Test Suite', 'Test Plan','Shared Steps','Shared Parameter','Feedback Request') ORDER BY [System.ChangedDate] desc",
"Enabled": false,
"WIQLQuery": "SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = @TeamProject AND [System.WorkItemType] NOT IN ('Program', 'Portfolio', 'Test Suite', 'Test Plan','Shared Steps','Shared Parameter','Feedback Request') ORDER BY [System.ChangedDate] desc",
"OnlyListUsersInWorkItems": true
}
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,23 @@ public void MapUserIdentityField(Field field)
private Dictionary<string, string> GetMappingFileData() {
if (_UserMappings == null && System.IO.File.Exists(Options.UserMappingFile)) {
var fileData = System.IO.File.ReadAllText(Options.UserMappingFile);
var fileMaps = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IdentityMapData>>(fileData);
_UserMappings = fileMaps.ToDictionary(x => x.Source.FriendlyName, x => x.target?.FriendlyName);
try
{
var fileMaps = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IdentityMapData>>(fileData);
_UserMappings = fileMaps.ToDictionary(x => x.Source.FriendlyName, x => x.target?.FriendlyName);
}
catch (Exception)
{
_UserMappings = new Dictionary<string, string>();
Log.LogError($"TfsUserMappingEnricher::GetMappingFileData [UserMappingFile|{Options.UserMappingFile}] <-- invalid - No mapping are applied!");
}

} else
{
Log.LogError($"TfsUserMappingEnricher::GetMappingFileData::No User Mapping file Provided! Provide file or disable TfsUserMappingEnricher");
_UserMappings = new Dictionary<string, string>();
}

return _UserMappings;

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ public class TfsUserMappingEnricherOptions : ProcessorEnricherOptions, ITfsUserM

public override void SetDefaults()
{
Enabled = true;
Enabled = false;
UserMappingFile = "usermapping.json";
IdentityFieldsToCheck = new List<string> {
"System.AssignedTo",
"System.ChangedBy",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,22 +43,30 @@ public bool ValidatingRequiredField(string fieldToFind, List<WorkItemData> sourc
var result = true;
foreach (WorkItemType sourceWorkItemType in sourceWorkItemTypes)
{
var workItemTypeName = sourceWorkItemType.Name;
if (Engine.TypeDefinitionMaps.Items.ContainsKey(workItemTypeName))
try
{
workItemTypeName = Engine.TypeDefinitionMaps.Items[workItemTypeName].Map();
}
var targetType = targetTypes[workItemTypeName];
var workItemTypeName = sourceWorkItemType.Name;
if (Engine.TypeDefinitionMaps.Items.ContainsKey(workItemTypeName))
{
workItemTypeName = Engine.TypeDefinitionMaps.Items[workItemTypeName].Map();
}
var targetType = targetTypes[workItemTypeName];

if (targetType.FieldDefinitions.Contains(fieldToFind))
{
Log.LogDebug("ValidatingRequiredField: {WorkItemTypeName} contains {fieldToFind}", targetType.Name, fieldToFind);
if (targetType.FieldDefinitions.Contains(fieldToFind))
{
Log.LogDebug("ValidatingRequiredField: {WorkItemTypeName} contains {fieldToFind}", targetType.Name, fieldToFind);
}
else
{
Log.LogWarning("ValidatingRequiredField: {WorkItemTypeName} does not contain {fieldToFind}", targetType.Name, fieldToFind);
result = false;
}
}
else
catch (WorkItemTypeDeniedOrNotExistException ex)
{
Log.LogWarning("ValidatingRequiredField: {WorkItemTypeName} does not contain {fieldToFind}", targetType.Name, fieldToFind);
result = false;
Log.LogWarning(ex, "ValidatingRequiredField: Unable to validate one of the work items as its returned by TFS but has been deleted");
}

}
return result;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ private void ValiddateWorkItemTypesExistInTarget(List<WorkItemData> sourceWorkIt
if (!allTypesMapped)
{
var ex = new Exception(
"Not all WorkItemTypes present in the Source are present in the Target or mapped!");
"Not all WorkItemTypes present in the Source are present in the Target or mapped! Filter them from the query, or map the to target types.");
Log.LogError(ex, "Not all WorkItemTypes present in the Source are present in the Target or mapped using `WorkItemTypeDefinition` in the config.");
throw ex;
}
Expand Down

0 comments on commit cc61094

Please sign in to comment.