Skip to content

[Bug]: AzureDevOpsPipelineProcessor invalid schema #3122

@eerstenk-byte

Description

@eerstenk-byte

Version

  • I confirm that I am using the latest version

Source Version

Azure DevOps Service

Target Version

Azure DevOps Service

Relevant configuration

{
    "Serilog": {
      "MinimumLevel": "Debug"
    },
    "MigrationTools": {
      "Version": "16.0",
      "Endpoints": {
        "Source": {
          "EndpointType": "AzureDevOpsEndpoint",
          "Organisation": "https://dev.azure.com/XXXX",
          "Project": "XXXX",
          "AuthenticationMode": "AccessToken",
          "AccessToken": "XXXXXXXX"
          },
        "Target": {
          "EndpointType": "AzureDevOpsEndpoint",
          "Organisation": "https://dev.azure.com/YYYY",
          "Project": "YYY",
          "AuthenticationMode": "AccessToken",
          "AccessToken": "YYYYYYYYY"
        }
      },
      "Processors": [
        {
          "ProcessorType": "AzureDevOpsPipelineProcessor",
          "BuildPipelines": "",
          "Enabled": "True",
          "MigrateBuildPipelines": "True",
          "MigrateReleasePipelines": "True",
          "MigrateServiceConnections": "True",
          "MigrateTaskGroups": "True",
          "MigrateVariableGroups": "True",
          "ReleasePipelines": "",
          "SourceName": "Source",
          "TargetName": "Target"
        }
      ]
   }
}

Relevant log output

PS C:\kit> devopsmigration execute --config nd.json
     _                                    ____                    ___
    / \     ____  _   _   _ __    ___    |  _ \    ___  __   __  / _ \   _ __    ___
   / _ \   |_  / | | | | | '__|  / _ \   | | | |  / _ \ \ \ / / | | | | | '_ \  / __|
  / ___ \   / /  | |_| | | |    |  __/   | |_| | |  __/  \ V /  | |_| | | |_) | \__ \
 /_/   \_\ /___|  \__,_| |_|     \___|   |____/   \___|   \_/    \___/  | .__/  |___/
                                                                        |_|
  __  __   _                          _     _                     _____                   _
 |  \/  | (_)   __ _   _ __    __ _  | |_  (_)   ___    _ __     |_   _|   ___     ___   | |  ___
 | |\/| | | |  / _` | | '__|  / _` | | __| | |  / _ \  | '_ \      | |    / _ \   / _ \  | | / __|
 | |  | | | | | (_| | | |    | (_| | | |_  | | | (_) | | | | |     | |   | (_) | | (_) | | | \__ \
 |_|  |_| |_|  \__, | |_|     \__,_|  \__| |_|  \___/  |_| |_|     |_|    \___/   \___/  |_| |___/
               |___/
[23:55:06 INF] [16.3.3] Azure DevOps Migration Tools [Object Model]
[23:55:06 INF] [16.3.3] 16.3.3
[23:55:06 INF] [16.3.3] naked Agility with Martin Hinshelwood
[23:55:06 INF] [16.3.3] ===============================================================================
[23:55:06 INF] [16.3.3] --------------------------------------
[23:55:06 INF] [16.3.3] Telemetry Note:
[23:55:06 INF] [16.3.3]    We use Application Insights to collect usage and error information in order to improve the quality of the tools.
[23:55:06 INF] [16.3.3]    Currently we collect the following anonymous data:
[23:55:06 INF] [16.3.3]      -Event data: application version, client city/country, hosting type, item count, error count, warning count, elapsed time.
[23:55:06 INF] [16.3.3]      -Exceptions: application errors and warnings.
[23:55:06 INF] [16.3.3]      -Dependencies: REST/ObjectModel calls to Azure DevOps to help us understand performance issues.
[23:55:06 INF] [16.3.3]    This data is tied to a session ID that is generated on each run of the application and shown in the logs. This can help with debugging. If you want to disable telemetry you can run the tool with '--disableTelemetry' on the command prompt.
[23:55:06 INF] [16.3.3]    Note: Exception data cannot be 100% guaranteed to not leak production data
[23:55:06 INF] [16.3.3] --------------------------------------
[23:55:06 INF] [16.3.3] Start Time: 03/17/2026 23:55:06
[23:55:06 INF] [16.3.3] Running with settings: {"ConfigFile": "nd.json", "DisableTelemetry": false, "DebugTrace": false, "skipVersionCheck": false, "$type": "ExecuteMigrationCommandSettings"}
[23:55:06 INF] [16.3.3] OSVersion: Microsoft Windows NT 6.2.9200.0
[23:55:06 INF] [16.3.3] Version (Assembly): 16.3.3
[23:55:06 INF] [16.3.3] Logpath: C:\Users\gaasp\AppData\Local\Microsoft\WinGet\Packages\nkdAgility.AzureDevOpsMigrationTools_Microsoft.Winget.Source_8wekyb3d8bbwe\logs\20260317235505
[23:55:06 DBG] [16.3.3] DetectOnlineService::IsOnline
[23:55:06 DBG] [16.3.3]      IsPackageManagerInstalled: True
[23:55:06 DBG] [16.3.3] Searching for package!
[23:55:07 DBG] [16.3.3] Found package with id nkdAgility.AzureDevOpsMigrationTools
[23:55:07 DBG] [16.3.3]      IsPackageInstalled: True
[23:55:07 DBG] [16.3.3]      IsUpdateAvailable: False
[23:55:07 DBG] [16.3.3]      IsNewLocalVersionAvailable: False
[23:55:07 DBG] [16.3.3]      IsRunningInDebug: False
[23:55:07 INF] [16.3.3] Verion Info:
[23:55:07 INF] [16.3.3]      Running: 16.3.3.0
[23:55:07 INF] [16.3.3]      Installed: 16.3.3
[23:55:07 INF] [16.3.3]      Available: 16.3.3
                                      _
   ___  __  __   ___    ___   _   _  | |_    ___
  / _ \ \ \/ /  / _ \  / __| | | | | | __|  / _ \
 |  __/  >  <  |  __/ | (__  | |_| | | |_  |  __/
  \___| /_/\_\  \___|  \___|  \__,_|  \__|  \___|

[23:55:07 ERR] [16.3.3] Configuration file 'nd.json' is not valid against the schema.

Validation errors (deduplicated & filtered):

Likely root cause missing properties (all deduped candidate sets):
  Path: MigrationTools.Endpoints.Source
    - missing Authentication, Collection (freq 4)
  Path: MigrationTools.Endpoints.Target
    - missing Authentication, Collection (freq 4)
  Path: MigrationTools.Processors[0]
    - missing WIQLQuery (freq 4)

Path: MigrationTools.Endpoints.Source
  - (Ln 8, Pos 19) Required: Required properties are missing from object: Authentication, Collection.
  - (Ln 8, Pos 19) Required: Required properties are missing from object: ReflectedWorkItemIdField.
Path: MigrationTools.Endpoints.Source.EndpointType
  - (Ln 9, Pos 47) Enum: Value "AzureDevOpsEndpoint" is not defined in enum.
Path: MigrationTools.Endpoints.Target
  - (Ln 15, Pos 19) Required: Required properties are missing from object: Authentication, Collection.
  - (Ln 15, Pos 19) Required: Required properties are missing from object: ReflectedWorkItemIdField.
Path: MigrationTools.Endpoints.Target.EndpointType
  - (Ln 16, Pos 47) Enum: Value "AzureDevOpsEndpoint" is not defined in enum.
Path: MigrationTools.Processors[0]
  - (Ln 24, Pos 9) Required: Required properties are missing from object: ResultFileName, WIQLQuery.
  - (Ln 24, Pos 9) Required: Required properties are missing from object: WIQLQuery.
Path: MigrationTools.Processors[0].BuildPipelines
  - (Ln 26, Pos 30) Type: Invalid type. Expected Array but got String.
Path: MigrationTools.Processors[0].Enabled
  - (Ln 27, Pos 27) Type: Invalid type. Expected Boolean but got String.
Path: MigrationTools.Processors[0].MigrateBuildPipelines
  - (Ln 28, Pos 41) Type: Invalid type. Expected Boolean but got String.
Path: MigrationTools.Processors[0].MigrateReleasePipelines
  - (Ln 29, Pos 43) Type: Invalid type. Expected Boolean but got String.
Path: MigrationTools.Processors[0].MigrateServiceConnections
  - (Ln 30, Pos 45) Type: Invalid type. Expected Boolean but got String.
Path: MigrationTools.Processors[0].MigrateTaskGroups
  - (Ln 31, Pos 37) Type: Invalid type. Expected Boolean but got String.
Path: MigrationTools.Processors[0].MigrateVariableGroups
  - (Ln 32, Pos 41) Type: Invalid type. Expected Boolean but got String.
Path: MigrationTools.Processors[0].ProcessorType
  - (Ln 25, Pos 57) Enum: Value "AzureDevOpsPipelineProcessor" is not defined in enum.
Path: MigrationTools.Processors[0].ReleasePipelines
  - (Ln 33, Pos 32) Type: Invalid type. Expected Array but got String.

Total unique validation errors after filtering: 17

NOTE: A single missing property can trigger multiple branch (anyOf/allOf) mismatches. Fix the root cause lines above first.

[23:55:07 INF] [16.3.3] Command ExecuteMigrationCommand completed in 00:00:01.3457367

What happened?

this is not the only config tried i have also tried these two varieties

{
  "$schema": "https://devopsmigration.io/schema/configuration.schema.json",
  "Serilog": {
    "MinimumLevel": "Information"
  },
  "MigrationTools": {
    "Version": "16.3",
    "Endpoints": {
      "Source": {
        "EndpointType": "TfsTeamProjectEndpoint",
        "Collection": "https://dev.azure.com/bankruptco/",
        "Project": "beautifulproject",
        "Authentication": {
          "AuthenticationMode": "AccessToken",
          "AccessToken": "concealed"
        },
        "LanguageMaps": {
          "AreaPath": "Area",
          "IterationPath": "Iteration"
        }
      },
      "Target": {
        "EndpointType": "TfsTeamProjectEndpoint",
        "Collection": "https://dev.azure.com/newco/",
        "Project": "beautifulproject",
        "Authentication": {
          "AuthenticationMode": "AccessToken",
          "AccessToken": "concealed"
        },
        "ReflectedWorkItemIdField": "Custom.ReflectedWorkItemId",
        "LanguageMaps": {
          "AreaPath": "Area",
          "IterationPath": "Iteration"
        }
      }
    },
    "Processors": [
      {
        "ProcessorType": "TfsWorkItemMigrationProcessor",
        "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",
        "FixHtmlAttachmentLinks": true,
        "WorkItemCreateRetryLimit": 5,
        "FilterWorkItemsThatAlreadyExistInTarget": false,
        "GenerateMigrationComment": true,
        "SourceName": "Source",
        "TargetName": "Target"
      },
      {
        "ProcessorType": "AzureDevOpsPipelineProcessor",
        "Enabled": true,
        "SourceName": "Source",
        "TargetName": "Target",

        "MigrateBuildPipelines": true,
        "MigrateReleasePipelines": true,
        "MigrateVariableGroups": true,
        "MigrateTaskGroups": true,
        "MigrateServiceConnections": true,

        "BuildPipelines": "",
        "ReleasePipelines": ""
      }
    ]
  }
}

and also

{
  "$schema": "https://devopsmigration.io/schema/configuration.schema.json",
  "Serilog": {
    "MinimumLevel": "Information"
  },
  "MigrationTools": {
    "Version": "16.3",
    "Endpoints": {
      "Source": {
        "EndpointType": "AzureDevOpsEndpoint",
        "Organisation": "https://dev.azure.com/bankruptcyco/",
        "Project": "gorgeousproj",
        "Authentication": {
          "AuthenticationMode": "AccessToken",
          "AccessToken": "concealed"
        },
        "LanguageMaps": {
          "AreaPath": "Area",
          "IterationPath": "Iteration"
        }
      },
      "Target": {
        "EndpointType": "AzureDevOpsEndpoint",
        "Organisation": "https://dev.azure.com/newco/",
        "Project": "gorgeousproj",
        "Authentication": {
          "AuthenticationMode": "AccessToken",
          "AccessToken": "concealed"
        },
        "ReflectedWorkItemIdField": "Custom.ReflectedWorkItemId",
        "LanguageMaps": {
          "AreaPath": "Area",
          "IterationPath": "Iteration"
        }
      }
    },
    "Processors": [
      {
        "ProcessorType": "TfsWorkItemMigrationProcessor",
        "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",
        "FixHtmlAttachmentLinks": true,
        "WorkItemCreateRetryLimit": 5,
        "FilterWorkItemsThatAlreadyExistInTarget": false,
        "GenerateMigrationComment": true,
        "SourceName": "Source",
        "TargetName": "Target"
      },
      {
        "ProcessorType": "AzureDevOpsPipelineProcessor",
        "Enabled": true,
        "SourceName": "Source",
        "TargetName": "Target",

        "MigrateBuildPipelines": true,
        "MigrateReleasePipelines": true,
        "MigrateVariableGroups": true,
        "MigrateTaskGroups": true,
        "MigrateServiceConnections": true,

        "BuildPipelines": "",
        "ReleasePipelines": ""
      }
    ]
  }
}

Debug in Visual Studio

  • Visual Studio Debug

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    To do

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions