Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v15! Query and CommonEnrichersConfig changes #1889

Merged
merged 6 commits into from
Feb 6, 2024
Merged

Conversation

MrHinsh
Copy link
Member

@MrHinsh MrHinsh commented Jan 30, 2024

This update is a +semver: major change. There are many config changes!

Change 1: Updates all Processors to use only CommonEnrichersConfig and removes inline options. Only options set in CommonEnrichersConfig will be honored.

This will minimise the number of configuration options for processors, and reduce confusion and support tickets.

  1. TfsNodeStructureOptions has been made the default so AreaMaps, IterationMaps, NodeBasePaths, PrefixProjectToNodes, ShouldCreateMissingRevisionPaths, and ReplicateAllExistingNodes are all removed from WorkItemMigrationContext and must instead be added to CommonEnrichersConfig in line with TfsNodeStructure. The documentation for AreaMaps, IterationMaps, NodeBasePaths has all been moved here.
  2. TfsRevisionManagerOptions has been made default so ReplayRevisions and MaxRevisions is now only configurable by adding a TfsRevisionManagerOptions section to CommonEnrichersConfig. See TfsRevisionManagerOptions
  3. 'TfsWorkItemLinkEnricherOptions' has been made the default moving its option FilterIfLinkCountMatches, and SaveAfterEachLinkIsAdded to CommonEnrichersConfig. See TfsWorkItemLinkEnricherOptions
  "CommonEnrichersConfig": [
    {
      "$type": "TfsNodeStructureOptions",
      "PrefixProjectToNodes": false,
      "NodeBasePaths": [],
      "AreaMaps": {
        "^Skypoint Cloud$": "MigrationTest5"
      },
      "IterationMaps": {
        "^Skypoint Cloud\\\\Sprint 1$": "MigrationTest5\\Sprint 1"
      },
      "ShouldCreateMissingRevisionPaths": true,
      "ReplicateAllExistingNodes": true
    },
    {
      "$type": "TfsWorkItemLinkEnricherOptions",
      "Enabled": true,
      "FilterIfLinkCountMatches": true,
      "SaveAfterEachLinkIsAdded": false
    },
    {
      "$type": "TfsRevisionManagerOptions",
      "Enabled": true,
      "ReplayRevisions": true,
      "MaxRevisions": 0
    }
  ],

Change 2: Update the Query system to no longer have two parts that are added together. All queries are now the full query. There are no docs on this but a typical query now looks like:

 "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",

This update is a +semver: major change. There are many config changes!

**Change 1:** Updates all Processors to use only `CommonEnrichersConfig`
and removes inline options. _Only options set in `CommonEnrichersConfig`
will be honored._

This will minimise the number of configuration options for processors,
and reduce confusion and support tickets.

1. `TfsNodeStructureOptions` has been made the default so `AreaMaps`,
`IterationMaps`, `NodeBasePaths`, `PrefixProjectToNodes`,
`ShouldCreateMissingRevisionPaths`, and `ReplicateAllExistingNodes` are
all removed from `WorkItemMigrationContext` and must instead be added to
`CommonEnrichersConfig` in line with
[TfsNodeStructure](https://nkdagility.com/learn/azure-devops-migration-tools/Reference/v2/ProcessorEnrichers/TfsNodeStructure/).
The documentation for `AreaMaps`, `IterationMaps`, `NodeBasePaths` has
all been moved here.
2. `TfsRevisionManagerOptions` has been made default so
`ReplayRevisions` and `MaxRevisions` is now only configurable by adding
a `TfsRevisionManagerOptions` section to `CommonEnrichersConfig`. See
[TfsRevisionManagerOptions](https://nkdagility.com/learn/azure-devops-migration-tools/Reference/v2/ProcessorEnrichers/TfsRevisionManager/)
3. 'TfsWorkItemLinkEnricherOptions' has been made the default moving its
option `FilterIfLinkCountMatches`, and `SaveAfterEachLinkIsAdded` to
`CommonEnrichersConfig`. See
[TfsWorkItemLinkEnricherOptions](https://nkdagility.com/learn/azure-devops-migration-tools/Reference/v2/ProcessorEnrichers/TfsWorkItemLinkEnricher/)

```
  "CommonEnrichersConfig": [
    {
      "$type": "TfsNodeStructureOptions",
      "PrefixProjectToNodes": false,
      "NodeBasePaths": [],
      "AreaMaps": {
        "^Skypoint Cloud$": "MigrationTest5"
      },
      "IterationMaps": {
        "^Skypoint Cloud\\\\Sprint 1$": "MigrationTest5\\Sprint 1"
      },
      "ShouldCreateMissingRevisionPaths": true,
      "ReplicateAllExistingNodes": true
    },
    {
      "$type": "TfsWorkItemLinkEnricherOptions",
      "Enabled": true,
      "FilterIfLinkCountMatches": true,
      "SaveAfterEachLinkIsAdded": false
    },
    {
      "$type": "TfsRevisionManagerOptions",
      "Enabled": true,
      "ReplayRevisions": true,
      "MaxRevisions": 0
    }
  ],
```


**Change 2:** Update the Query system to no longer have two parts that
are added together. All queries are now the full query. There are no
docs on this but a typical query now looks like:

```
 "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",
```
@MrHinsh MrHinsh temporarily deployed to nakedalmweb-githubSDK January 30, 2024 14:39 — with GitHub Actions Inactive
@MrHinsh MrHinsh temporarily deployed to nakedalmweb-githubSDK January 30, 2024 20:00 — with GitHub Actions Inactive
@MrHinsh MrHinsh temporarily deployed to nakedalmweb-githubSDK February 5, 2024 16:52 — with GitHub Actions Inactive
This should truncate longTest fields to the max length and resolve #1861
@MrHinsh MrHinsh temporarily deployed to nakedalmweb-githubSDK February 6, 2024 11:37 — with GitHub Actions Inactive
@MrHinsh MrHinsh self-assigned this Feb 6, 2024
@MrHinsh MrHinsh merged commit 4a3ea72 into master Feb 6, 2024
7 checks passed
MrHinsh added a commit that referenced this pull request Mar 4, 2024
This update is a +semver: major change. There are many config changes!

**Change 1:** Updates all Processors to use only `CommonEnrichersConfig`
and removes inline options. _Only options set in `CommonEnrichersConfig`
will be honored._

This will minimise the number of configuration options for processors,
and reduce confusion and support tickets.

1. `TfsNodeStructureOptions` has been made the default so `AreaMaps`,
`IterationMaps`, `NodeBasePaths`, `PrefixProjectToNodes`,
`ShouldCreateMissingRevisionPaths`, and `ReplicateAllExistingNodes` are
all removed from `WorkItemMigrationContext` and must instead be added to
`CommonEnrichersConfig` in line with
[TfsNodeStructure](https://nkdagility.com/learn/azure-devops-migration-tools/Reference/v2/ProcessorEnrichers/TfsNodeStructure/).
The documentation for `AreaMaps`, `IterationMaps`, `NodeBasePaths` has
all been moved here.
2. `TfsRevisionManagerOptions` has been made default so
`ReplayRevisions` and `MaxRevisions` is now only configurable by adding
a `TfsRevisionManagerOptions` section to `CommonEnrichersConfig`. See
[TfsRevisionManagerOptions](https://nkdagility.com/learn/azure-devops-migration-tools/Reference/v2/ProcessorEnrichers/TfsRevisionManager/)
3. 'TfsWorkItemLinkEnricherOptions' has been made the default moving its
option `FilterIfLinkCountMatches`, and `SaveAfterEachLinkIsAdded` to
`CommonEnrichersConfig`. See
[TfsWorkItemLinkEnricherOptions](https://nkdagility.com/learn/azure-devops-migration-tools/Reference/v2/ProcessorEnrichers/TfsWorkItemLinkEnricher/)

```
  "CommonEnrichersConfig": [
    {
      "$type": "TfsNodeStructureOptions",
      "PrefixProjectToNodes": false,
      "NodeBasePaths": [],
      "AreaMaps": {
        "^Skypoint Cloud$": "MigrationTest5"
      },
      "IterationMaps": {
        "^Skypoint Cloud\\\\Sprint 1$": "MigrationTest5\\Sprint 1"
      },
      "ShouldCreateMissingRevisionPaths": true,
      "ReplicateAllExistingNodes": true
    },
    {
      "$type": "TfsWorkItemLinkEnricherOptions",
      "Enabled": true,
      "FilterIfLinkCountMatches": true,
      "SaveAfterEachLinkIsAdded": false
    },
    {
      "$type": "TfsRevisionManagerOptions",
      "Enabled": true,
      "ReplayRevisions": true,
      "MaxRevisions": 0
    }
  ],
```


**Change 2:** Update the Query system to no longer have two parts that
are added together. All queries are now the full query. There are no
docs on this but a typical query now looks like:

```
 "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",
```

**Change 3:** Added a String Manipulator to combat the new 100000 max
string length and the inability of the ObjectModel to support special
chars:

```
    {
      "$type": "StringManipulatorEnricherOptions",
      "Enabled": true,
      "MaxStringLength": 1000000,
      "Manipulators": [
        {
          "$type": "RegexStringManipulator",
          "Enabled": false,
          "Pattern": "[^( -~)\n\r\t]+",
          "Replacement": "",
          "Description": "Remove invalid characters from the end of the string"
        }
      ]
    }
```

Real version of #1889

---------

Co-authored-by: Nico Orschel <norschel@users.noreply.github.com>
Co-authored-by: Tom Frenzel <40773830+tomfrenzel@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant