From 5a5d89b2f8a012e02e8b7841bde69691832ef431 Mon Sep 17 00:00:00 2001
From: Pranav Vishnumolakala
Date: Thu, 19 Feb 2026 12:42:19 -0800
Subject: [PATCH] Release 6.0.0
---
.config/dotnet-tools.json | 4 +-
.editorconfig | 2 +-
.github/.secrets.default | 6 +
.github/.vars.default | 38 +
.github/workflows/build-docs.yml | 6 +-
.github/workflows/build-dotnet.yml | 13 +-
.github/workflows/build-python-package.yml | 14 +-
.github/workflows/create-release.yml | 18 +-
.github/workflows/deploy-all.yml | 1 +
.github/workflows/deploy-docs.yml | 4 +-
.github/workflows/deploy-dotnet.yml | 20 +-
.github/workflows/deploy-python.yml | 14 +-
.github/workflows/lint-python.yml | 8 +-
.github/workflows/sdk-workflow.yml | 4 +-
.github/workflows/test-dotnet.yml | 16 +-
.github/workflows/test-python.yml | 39 +-
Directory.Build.props | 6 +-
LICENSE.txt | 2 +-
.../Csharp.ExampleApplication.csproj | 2 +-
.../MyMigrationApplication.cs | 8 +-
.../EmptyMigrationContentLoader.cs | 16 +
.../packages.lock.json | 1030 +++++------
...endencyInjection.ExampleApplication.csproj | 2 +-
.../packages.lock.json | 700 ++++----
.../transformers/migrated_tag_transformer.py | 17 +-
.../Python.ExampleApplication/pyproject.toml | 2 +-
.../requirements.txt | 2 +-
.../empty_migration_content_loader.py | 11 +
global.json | 2 +-
scripts/generate-docs.ps1 | 22 +-
src/Documentation/api-python/index.md | 4 +-
.../articles/configuration/data_loading.md | 63 +
.../index.md} | 10 +-
.../configuration/skip_content_type.md | 36 +
.../articles/content-type-api-ver.md | 5 +
.../index.md} | 6 +-
.../migration_services.md | 126 ++
.../articles/hooks/custom_hooks.md | 2 +-
src/Documentation/articles/logging.md | 2 +-
src/Documentation/articles/terms.md | 2 +-
src/Documentation/articles/toc.yml | 16 +-
src/Documentation/articles/troubleshooting.md | 4 +
src/Documentation/docfx.json | 3 +-
.../configuration/sdk_opts_content_types.html | 11 +
.../configuration/sdk_opts_network_res.html | 4 +-
.../includes/content_types_api_mapping.html | 133 ++
.../log_migration_batches.md | 2 +-
.../samples/bulk-post-publish/bulk_logging.md | 2 +-
.../filters/filter_custom_views_by_shared.md | 4 +-
.../filters/filter_projects_by_name.md | 4 +-
.../filters/filter_users_by_site_role.md | 4 +-
src/Documentation/samples/index.md | 6 +-
.../set_custom_context.md | 10 +-
.../samples/mappings/change_projects.md | 4 +-
.../samples/mappings/rename_projects.md | 4 +-
.../mappings/username_email_mapping.md | 4 +-
.../log_migration_actions.md | 4 +-
.../action_url_xml_transformer.md | 6 +-
.../custom_view_default_users_transformer.md | 3 +-
.../encrypt_extracts_transformer.md | 4 +-
.../transformers/migrated_tag_transformer.md | 4 +-
.../transformers/modify_permissions.md | 6 +-
.../transformers/start_at_transformer.md | 4 +-
src/Documentation/scripts/table-sorter.js | 122 ++
.../tableau/partials/scripts.tmpl.partial | 6 +
.../templates/tableau/styles/main.css | 36 +
src/Python/LICENSE | 2 +-
src/Python/Python.pyproj | 6 +
src/Python/pyproject.toml | 37 +-
src/Python/requirements.txt | 10 +-
src/Python/scripts/build-package.ps1 | 14 +-
src/Python/scripts/build_binaries.py | 5 +-
src/Python/src/tableau_migration/__init__.py | 12 +-
src/Python/src/tableau_migration/migration.py | 62 +-
.../tableau_migration/migration_api_rest.py | 2 +-
.../migration_api_rest_models.py | 2 +-
.../migration_api_rest_models_types.py | 2 +-
.../tableau_migration/migration_content.py | 96 +-
.../migration_content_permissions.py | 46 +-
.../migration_content_schedules.py | 8 +-
.../migration_content_schedules_cloud.py | 2 +-
.../migration_content_schedules_server.py | 2 +-
.../migration_content_search.py | 2 +-
.../src/tableau_migration/migration_engine.py | 175 +-
.../migration_engine_actions.py | 2 +-
.../migration_engine_endpoints_caching.py | 114 ++
.../migration_engine_endpoints_search.py | 215 ++-
.../migration_engine_hooks.py | 30 +-
.../migration_engine_hooks_filters.py | 8 +-
.../migration_engine_hooks_filters_interop.py | 10 +-
...ration_engine_hooks_initializemigration.py | 2 +-
.../migration_engine_hooks_interop.py | 132 +-
.../migration_engine_hooks_mappings.py | 8 +-
...migration_engine_hooks_mappings_interop.py | 14 +-
.../migration_engine_hooks_postpublish.py | 2 +-
...ration_engine_hooks_postpublish_interop.py | 20 +-
.../migration_engine_hooks_transformers.py | 14 +-
...ation_engine_hooks_transformers_interop.py | 26 +-
.../migration_engine_manifest.py | 2 +-
.../migration_engine_migrators.py | 2 +-
.../migration_engine_migrators_batch.py | 2 +-
.../migration_engine_options.py | 2 +-
.../migration_engine_pipelines.py | 2 +-
.../migration_engine_services.py | 365 ++++
.../src/tableau_migration/migration_enum.py | 2 +-
.../tableau_migration/migration_interop.py | 146 ++
.../src/tableau_migration/migration_logger.py | 2 +-
.../src/tableau_migration/migration_paging.py | 117 ++
.../tableau_migration/migration_services.py | 2 +-
src/Python/tests/__init__.py | 22 +-
src/Python/tests/helpers/autofixture.py | 2 +-
src/Python/tests/test_classes.py | 8 +-
src/Python/tests/test_migration.py | 20 +-
src/Python/tests/test_migration_api_rest.py | 2 +-
.../tests/test_migration_api_rest_models.py | 2 +-
src/Python/tests/test_migration_content.py | 45 +-
.../test_migration_content_permissions.py | 18 +-
.../tests/test_migration_content_schedules.py | 4 +-
.../test_migration_content_schedules_cloud.py | 2 +-
...test_migration_content_schedules_server.py | 2 +-
.../tests/test_migration_content_search.py | 2 +-
src/Python/tests/test_migration_engine.py | 26 +-
.../test_migration_engine_endpoints_search.py | 182 +-
.../tests/test_migration_engine_hooks.py | 2 +-
.../test_migration_engine_hooks_filters.py | 2 +-
.../test_migration_engine_hooks_mappings.py | 2 +-
...test_migration_engine_hooks_postpublish.py | 2 +-
...est_migration_engine_hooks_transformers.py | 4 +-
.../tests/test_migration_engine_manifest.py | 2 +-
.../test_migration_engine_migrators_batch.py | 2 +-
.../tests/test_migration_engine_options.py | 2 +-
.../tests/test_migration_engine_services.py | 276 +++
src/Python/tests/test_migration_paging.py | 55 +
src/Python/tests/test_migration_services.py | 3 +-
src/Python/tests/test_other.py | 2 +-
.../Config/Hints/GeneratorHints.cs | 2 +-
.../Config/Hints/NamespaceHints.cs | 2 +-
.../Config/Hints/TypeHints.cs | 2 +-
.../Config/PythonGeneratorOptions.cs | 2 +-
.../ConversionMode.cs | 2 +-
.../GenerationListHelper.cs | 2 +-
.../Generators/IPythonDocstringGenerator.cs | 2 +-
.../Generators/IPythonEnumValueGenerator.cs | 2 +-
.../Generators/IPythonGenerator.cs | 2 +-
.../Generators/IPythonMethodGenerator.cs | 2 +-
.../Generators/IPythonPropertyGenerator.cs | 2 +-
.../Generators/IPythonTypeGenerator.cs | 2 +-
.../Generators/PythonDocstringGenerator.cs | 2 +-
.../Generators/PythonEnumValueGenerator.cs | 2 +-
.../Generators/PythonGenerator.cs | 2 +-
.../Generators/PythonMemberGenerator.cs | 4 +-
.../Generators/PythonMethodGenerator.cs | 2 +-
.../Generators/PythonPropertyGenerator.cs | 2 +-
.../Generators/PythonTypeGenerator.cs | 2 +-
.../INamedTypeSymbolExtensions.cs | 2 +-
.../ITypeSymbolExtensions.cs | 2 +-
.../IndentingStringBuilder.cs | 2 +-
.../Keywords/Dotnet/Namespaces.cs | 2 +-
.../Keywords/Dotnet/TypeAliases.cs | 2 +-
.../Keywords/Dotnet/Types.cs | 2 +-
.../Keywords/Python/Modules.cs | 2 +-
.../Keywords/Python/Types.cs | 2 +-
.../Program.cs | 2 +-
.../PythonArgDocstring.cs | 2 +-
.../PythonDocstring.cs | 2 +-
.../PythonEnumValue.cs | 2 +-
.../PythonGenerationList.cs | 3 +-
.../PythonGeneratorService.cs | 2 +-
.../PythonMethod.cs | 2 +-
.../PythonMethodArgument.cs | 2 +-
.../PythonProperty.cs | 2 +-
.../PythonTestGenerationList.cs | 2 +-
.../PythonType.cs | 2 +-
.../PythonTypeCache.cs | 2 +-
.../PythonTypeReference.cs | 2 +-
.../StringExtensions.cs | 2 +-
.../Tableau.Migration.PythonGenerator.csproj | 6 +-
.../Writers/GeneratedPythonSegment.cs | 2 +-
.../Writers/IPythonClassTestWriter.cs | 2 +-
.../Writers/IPythonConstructorTestWriter.cs | 2 +-
.../Writers/IPythonDocstringWriter.cs | 2 +-
.../Writers/IPythonEnumValueWriter.cs | 2 +-
.../Writers/IPythonMethodWriter.cs | 2 +-
.../Writers/IPythonPropertyTestWriter.cs | 2 +-
.../Writers/IPythonPropertyWriter.cs | 2 +-
.../Writers/IPythonTestWriter.cs | 2 +-
.../Writers/IPythonTypeWriter.cs | 2 +-
.../Writers/IPythonWriter.cs | 2 +-
.../Writers/Imports/ImportedModule.cs | 2 +-
.../Writers/Imports/ImportedType.cs | 2 +-
.../Writers/PythonClassTestWriter.cs | 2 +-
.../Writers/PythonConstructorTestWriter.cs | 2 +-
.../Writers/PythonDocstringWriter.cs | 2 +-
.../Writers/PythonEnumValueWriter.cs | 2 +-
.../Writers/PythonMemberWriter.cs | 2 +-
.../Writers/PythonMethodWriter.cs | 2 +-
.../Writers/PythonPropertyTestWriter.cs | 2 +-
.../Writers/PythonPropertyWriter.cs | 19 +-
.../Writers/PythonTestWriter.cs | 2 +-
.../Writers/PythonTypeWriter.cs | 2 +-
.../Writers/PythonWriter.cs | 2 +-
.../Writers/PythonWriterBase.cs | 2 +-
.../packages.lock.json | 566 +++---
src/Tableau.Migration/Api/ApiClient.cs | 2 +-
src/Tableau.Migration/Api/ApiClientBase.cs | 2 +-
src/Tableau.Migration/Api/ApiClientInput.cs | 2 +-
.../AuthenticationConfigurationsApiClient.cs | 2 +-
.../Api/AuthenticationTokenProvider.cs | 2 +-
.../Api/ClientXml/Models/FailedLogin.cs | 2 +-
.../Api/ClientXml/Models/SuccessfulLogin.cs | 2 +-
.../Models/SuccessfulOrFailedLogin.cs | 2 +-
.../Api/ConnectionManager.cs | 2 +-
.../Api/ContentApiClientBase.cs | 17 +-
.../Api/CustomViewsApiClient.cs | 36 +-
.../Api/DataSourcesApiClient.cs | 53 +-
.../EmbeddedCredentialsApiClient.cs | 2 +-
.../EmbeddedCredentialsApiClientFactory.cs | 2 +-
.../IEmbeddedCredentialsApiClient.cs | 2 +-
.../IEmbeddedCredentialsApiClientFactory.cs | 2 +-
.../IEmbeddedCredentialsContentApiClient.cs | 2 +-
.../Api/FavoritesApiClient.cs | 5 +-
src/Tableau.Migration/Api/FlowsApiClient.cs | 40 +-
.../Api/GroupSetsApiClient.cs | 34 +-
src/Tableau.Migration/Api/GroupsApiClient.cs | 40 +-
.../Api/GroupsResponseExtensions.cs | 2 +-
src/Tableau.Migration/Api/IApiClient.cs | 2 +-
src/Tableau.Migration/Api/IApiClientInput.cs | 2 +-
.../Api/IApiClientInputInitializer.cs | 2 +-
src/Tableau.Migration/Api/IApiContentUrl.cs | 2 +-
.../IAuthenticationConfigurationsApiClient.cs | 2 +-
.../Api/IAuthenticationTokenProvider.cs | 2 +-
.../Api/IBatchPublishApiClient.cs | 2 +-
.../Api/ICloudSubscriptionsApiClient.cs | 6 +-
.../Api/ICloudTasksApiClient.cs | 3 +-
.../Api/IConnectionManager.cs | 2 +-
.../Api/IConnectionsApiClient.cs | 2 +-
.../Api/IContentApiClient.cs | 2 +-
.../Api/IContentFileStoreExtensions.cs | 2 +-
...ContentReferenceFinderFactoryExtensions.cs | 36 +-
.../Api/IContentUrlSearchApiClient.cs | 45 +
.../Api/ICustomViewsApiClient.cs | 24 +-
.../Api/IDataSourcesApiClient.cs | 41 +-
src/Tableau.Migration/Api/IDeleteApiClient.cs | 2 +-
.../Api/IFavoritesApiClient.cs | 2 +-
.../Api/IFilteredPagedListApiClient.cs | 51 +
src/Tableau.Migration/Api/IFlowsApiClient.cs | 15 +-
.../Api/IGroupSetsApiClient.cs | 7 +-
src/Tableau.Migration/Api/IGroupsApiClient.cs | 18 +-
.../Api/IHttpRequestBuilderExtensions.cs | 2 +-
.../Api/IHttpResponseMessageExtensions.cs | 2 +-
src/Tableau.Migration/Api/IJobsApiClient.cs | 2 +-
.../Api/INameSearchApiClient.cs | 51 +
.../Api/IOwnershipApiClient.cs | 2 +-
.../Api/IPagedListApiClient.cs | 2 +-
.../Api/IProjectsApiClient.cs | 7 +-
.../Api/IPublishApiClient.cs | 2 +-
src/Tableau.Migration/Api/IPullApiClient.cs | 2 +-
src/Tableau.Migration/Api/IReadApiClient.cs | 2 +-
.../IRestRequestBuilderFactoryExtensions.cs | 2 +-
.../Api/ISchedulesApiClient.cs | 2 +-
.../Api/ISchedulesApiClientFactory.cs | 2 +-
.../Api/IScopedApiClientFactory.cs | 2 +-
.../Api/IServerSessionProvider.cs | 2 +-
.../Api/IServerSubscriptionsApiClient.cs | 7 +-
.../Api/IServerTasksApiClient.cs | 4 +-
.../Api/IServiceCollectionExtensions.cs | 8 +-
src/Tableau.Migration/Api/ISitesApiClient.cs | 16 +-
.../Api/ISubscriptionsApiClient.cs | 2 +-
.../Api/ITableauServerVersionProvider.cs | 2 +-
src/Tableau.Migration/Api/ITasksApiClient.cs | 2 +-
src/Tableau.Migration/Api/IUsersApiClient.cs | 17 +-
src/Tableau.Migration/Api/IViewsApiClient.cs | 5 +-
.../Api/IViewsApiClientFactory.cs | 2 +-
src/Tableau.Migration/Api/IWorkbookView.cs | 64 +
.../Api/IWorkbooksApiClient.cs | 35 +-
src/Tableau.Migration/Api/JobsApiClient.cs | 2 +-
.../Api/Labels/ILabelsApiClient.cs | 2 +-
.../Api/Labels/ILabelsApiClientFactory.cs | 2 +-
.../Api/Labels/ILabelsContentApiClient.cs | 2 +-
.../Api/Labels/LabelsApiClient.cs | 2 +-
.../Api/Labels/LabelsApiClientFactory.cs | 2 +-
.../Api/Models/AddUserResult.cs | 2 +-
.../Api/Models/AddUserToGroupResult.cs | 2 +-
.../Api/Models/ApplyKeychainOptions.cs | 2 +-
.../Cloud/CreateExtractRefreshTaskOptions.cs | 2 +-
.../Models/Cloud/CreateSubscriptionOptions.cs | 2 +-
.../Cloud/ICreateExtractRefreshTaskOptions.cs | 2 +-
.../Cloud/ICreateSubscriptionOptions.cs | 2 +-
.../Api/Models/CreateProjectOptions.cs | 2 +-
.../CustomViewAsUserDefaultViewResult.cs | 2 +-
.../Api/Models/DestinationSiteInfo.cs | 2 +-
.../EmbeddedCredentialKeychainResult.cs | 2 +-
.../Api/Models/FailedJobException.cs | 2 +-
.../Api/Models/FileDownload.cs | 2 +-
.../Api/Models/IAddUserResult.cs | 2 +-
.../Api/Models/IAddUserToGroupResult.cs | 2 +-
.../Api/Models/IApplyKeychainOptions.cs | 2 +-
.../Api/Models/ICreateProjectOptions.cs | 2 +-
.../ICustomViewAsUserDefaultViewResult.cs | 2 +-
.../Api/Models/IDestinationSiteInfo.cs | 2 +-
.../IEmbeddedCredentialKeychainResult.cs | 2 +-
.../Api/Models/IImportJob.cs | 2 +-
src/Tableau.Migration/Api/Models/IJob.cs | 2 +-
.../Api/Models/IKeychainUserMapping.cs | 2 +-
.../Api/Models/ILabelUpdateOptions.cs | 2 +-
.../Api/Models/IPublishCustomViewOptions.cs | 2 +-
.../Api/Models/IPublishDataSourceOptions.cs | 2 +-
.../Api/Models/IPublishFileOptions.cs | 2 +-
.../Api/Models/IPublishFlowOptions.cs | 2 +-
.../Api/Models/IPublishWorkbookOptions.cs | 2 +-
.../Api/Models/IServerInfo.cs | 2 +-
.../Api/Models/ISignInResult.cs | 2 +-
.../Api/Models/IStatusNote.cs | 2 +-
.../Api/Models/IUpdateConnectionOptions.cs | 2 +-
.../Api/Models/IUpdateDataSourceResult.cs | 2 +-
.../Api/Models/IUpdateProjectResult.cs | 2 +-
.../Api/Models/IUpdateUserResult.cs | 2 +-
.../Api/Models/IUpdateWorkbookResult.cs | 2 +-
.../Api/Models/IUserExtensions.cs | 2 +-
src/Tableau.Migration/Api/Models/ImportJob.cs | 2 +-
src/Tableau.Migration/Api/Models/Job.cs | 2 +-
.../Api/Models/KeychainUserMapping.cs | 2 +-
.../Api/Models/LabelUpdateOptions.cs | 2 +-
.../Api/Models/PublishCustomViewOptions.cs | 2 +-
.../Api/Models/PublishDataSourceOptions.cs | 2 +-
.../Api/Models/PublishFileOptionsBase.cs | 2 +-
.../Api/Models/PublishFlowOptions.cs | 2 +-
.../Api/Models/PublishWorkbookOptions.cs | 2 +-
.../Api/Models/ServerInfo.cs | 2 +-
.../Api/Models/SignInResult.cs | 2 +-
.../Api/Models/StatusNote.cs | 2 +-
.../Api/Models/TimeoutJobException.cs | 2 +-
.../Api/Models/UpdateConnectionOptions.cs | 2 +-
.../Api/Models/UpdateDataSourceResult.cs | 2 +-
.../Api/Models/UpdateProjectResult.cs | 2 +-
.../Api/Models/UpdateUserResult.cs | 2 +-
.../Api/Models/UpdateWorkbookResult.cs | 2 +-
.../Api/Paging/ApiFilteredListPager.cs | 42 +
.../Api/{ => Paging}/ApiListPager.cs | 6 +-
.../Api/{ => Paging}/FavoritesApiListPager.cs | 4 +-
.../Api/Paging/IApiFilteredPageAccessor.cs | 42 +
.../Api/{ => Paging}/IApiPageAccessor.cs | 4 +-
.../Api/Paging/ProjectFilteredListPager.cs | 76 +
.../DefaultPermissionsApiClient.cs | 2 +-
.../IDefaultPermissionsApiClient.cs | 2 +-
.../Api/Permissions/IPermissionsApiClient.cs | 2 +-
.../IPermissionsApiClientFactory.cs | 2 +-
.../IPermissionsContentApiClient.cs | 2 +-
.../Api/Permissions/PermissionsApiClient.cs | 34 +-
.../PermissionsApiClientFactory.cs | 8 +-
.../Api/ProjectsApiClient.cs | 23 +-
.../Api/Publishing/CustomViewPublisher.cs | 2 +-
.../Api/Publishing/DataSourcePublisher.cs | 2 +-
.../Api/Publishing/FilePublisherBase.cs | 13 +-
.../Api/Publishing/FlowPublisher.cs | 2 +-
.../Api/Publishing/ICustomViewPublisher.cs | 2 +-
.../Api/Publishing/IDataSourcePublisher.cs | 2 +-
.../Api/Publishing/IFilePublisher.cs | 2 +-
.../Api/Publishing/IFlowPublisher.cs | 2 +-
.../Api/Publishing/IWorkbookPublisher.cs | 2 +-
.../Api/Publishing/WorkbookPublisher.cs | 2 +-
.../Api/RefreshAuthenticationTokenDelegate.cs | 2 +-
.../Api/Rest/ContentItemUriBuilderBase.cs | 2 +-
.../Api/Rest/INamedContent.cs | 2 +-
.../Api/Rest/IPermissionsUriBuilder.cs | 2 +-
.../Api/Rest/IProjectsResponseApiClient.cs | 2 +-
.../Api/Rest/IRestIdentifiable.cs | 2 +-
.../Api/Rest/Models/AdministratorLevels.cs | 2 +-
.../Api/Rest/Models/ContentPermissions.cs | 2 +-
.../CustomViewDefaultUsersResponsePager.cs | 2 +-
.../Api/Rest/Models/Error.cs | 2 +-
.../Api/Rest/Models/ExtractEncryptionModes.cs | 2 +-
.../Rest/Models/GroupUsersResponsePager.cs | 2 +-
.../Api/Rest/Models/IConnectionType.cs | 2 +-
.../Api/Rest/Models/ICustomViewType.cs | 2 +-
.../Api/Rest/Models/IDataSourceDetailsType.cs | 2 +-
.../Api/Rest/Models/IDataSourceType.cs | 8 +-
.../Api/Rest/Models/IFavoriteType.cs | 2 +-
.../Rest/Models/IFavoriteTypeExtensions.cs | 2 +-
.../Api/Rest/Models/IFlowType.cs | 2 +-
.../Api/Rest/Models/IGroupSetType.cs | 2 +-
.../Api/Rest/Models/ILocationType.cs | 2 +-
.../Rest/Models/IProjectNamedReferenceType.cs | 2 +-
.../Api/Rest/Models/IProjectReferenceType.cs | 2 +-
.../Api/Rest/Models/IProjectType.cs | 2 +-
.../Api/Rest/Models/IProjectTypeExtensions.cs | 2 +-
.../Api/Rest/Models/IScheduleType.cs | 2 +-
.../Api/Rest/Models/ISubscriptionType.cs | 2 +-
.../Rest/Models/ITableauServerListResponse.cs | 2 +-
.../Api/Rest/Models/ITableauServerResponse.cs | 2 +-
.../ITableauServerWithParentResponse.cs | 2 +-
.../Api/Rest/Models/ITagType.cs | 2 +-
.../Api/Rest/Models/IUserType.cs | 2 +-
.../Api/Rest/Models/IUserTypeExtensions.cs | 2 +-
.../Api/Rest/Models/IViewReferenceType.cs | 2 +-
.../Api/Rest/Models/IViewType.cs | 28 +-
.../Models/IWithDataSourceReferenceType.cs | 2 +-
.../Api/Rest/Models/IWithOwnerType.cs | 2 +-
.../Models/IWithProjectNamedReferenceType.cs | 2 +-
.../Rest/Models/IWithProjectReferenceType.cs | 2 +-
.../Rest/Models/IWithScheduleReferenceType.cs | 2 +-
.../Api/Rest/Models/IWithTagTypes.cs | 2 +-
.../Models/IWithWorkbookNamedReferenceType.cs | 2 +-
.../Rest/Models/IWithWorkbookReferenceType.cs | 2 +-
.../Api/Rest/Models/IWorkbookDetailsType.cs | 2 +-
.../Models/IWorkbookNamedReferenceType.cs | 2 +-
.../Api/Rest/Models/IWorkbookReferenceType.cs | 2 +-
.../Api/Rest/Models/IWorkbookType.cs | 2 +-
.../Rest/Models/IWorkbookViewReferenceType.cs | 2 +-
.../Api/Rest/Models/IWorkbookViewType.cs | 34 +
.../Api/Rest/Models/LabelCategories.cs | 2 +-
.../Api/Rest/Models/LabelContentTypes.cs | 2 +-
.../Api/Rest/Models/LicenseLevels.cs | 2 +-
.../Api/Rest/Models/Pagination.cs | 2 +-
.../Api/Rest/Models/ParentContentTypeNames.cs | 2 +-
.../Rest/Models/PermissionsCapabilityModes.cs | 2 +-
.../Rest/Models/PermissionsCapabilityNames.cs | 2 +-
.../Models/Requests/AddFavoriteRequest.cs | 2 +-
.../Rest/Models/Requests/AddTagsRequest.cs | 2 +-
.../Models/Requests/AddUserToGroupRequest.cs | 2 +-
.../Models/Requests/AddUserToSiteRequest.cs | 2 +-
.../Models/Requests/ApplyKeychainRequest.cs | 2 +-
.../Cloud/CreateExtractRefreshTaskRequest.cs | 2 +-
.../Cloud/CreateSubscriptionRequest.cs | 2 +-
.../Cloud/UpdateSubscriptionRequest.cs | 2 +-
.../CommitCustomViewPublishRequest.cs | 2 +-
.../CommitDataSourcePublishRequest.cs | 2 +-
.../Requests/CommitFlowPublishRequest.cs | 2 +-
.../Requests/CommitWorkbookPublishRequest.cs | 2 +-
.../Models/Requests/CreateGroupSetRequest.cs | 2 +-
.../Requests/CreateLocalGroupRequest.cs | 2 +-
.../Models/Requests/CreateProjectRequest.cs | 2 +-
.../Rest/Models/Requests/GetLabelsRequest.cs | 2 +-
.../Models/Requests/ImportGroupRequest.cs | 2 +-
.../Requests/ImportUsersFromCsvRequest.cs | 2 +-
.../Models/Requests/PermissionsAddRequest.cs | 2 +-
.../Requests/RetrieveKeychainRequest.cs | 2 +-
.../RetrieveUserSavedCredentialsRequest.cs | 2 +-
.../SetCustomViewDefaultUsersRequest.cs | 2 +-
.../Api/Rest/Models/Requests/SignInRequest.cs | 2 +-
.../Models/Requests/TableauServerRequest.cs | 2 +-
.../Requests/UpdateConnectionRequest.cs | 2 +-
.../Requests/UpdateCustomViewRequest.cs | 2 +-
.../Requests/UpdateDataSourceRequest.cs | 2 +-
.../Models/Requests/UpdateLabelsRequest.cs | 2 +-
.../Models/Requests/UpdateProjectRequest.cs | 2 +-
.../Rest/Models/Requests/UpdateSiteRequest.cs | 2 +-
.../Rest/Models/Requests/UpdateUserRequest.cs | 2 +-
.../Models/Requests/UpdateWorkbookRequest.cs | 2 +-
.../Requests/UploadSavedCredentialsRequest.cs | 2 +-
.../Rest/Models/Responses/AddTagsResponse.cs | 2 +-
.../Rest/Models/Responses/AddUserResponse.cs | 2 +-
.../Cloud/CreateExtractRefreshTaskResponse.cs | 2 +-
.../Cloud/CreateSubscriptionResponse.cs | 2 +-
.../Cloud/ExtractRefreshTaskResponse.cs | 199 +++
.../Cloud/ExtractRefreshTasksResponse.cs | 2 +-
.../Cloud/GetSubscriptionResponse.cs | 282 +++
.../Cloud/GetSubscriptionsResponse.cs | 2 +-
.../Cloud/ICloudExtractRefreshType.cs | 2 +-
.../Responses/Cloud/ICloudScheduleType.cs | 2 +-
.../Cloud/UpdateSubscriptionResponse.cs | 2 +-
.../Models/Responses/CollectionsResponse.cs | 2 +-
.../Models/Responses/ConnectionResponse.cs | 2 +-
.../Models/Responses/ConnectionsResponse.cs | 2 +-
.../Models/Responses/CreateGroupResponse.cs | 2 +-
.../Responses/CreateGroupSetResponse.cs | 2 +-
.../Models/Responses/CreateProjectResponse.cs | 2 +-
.../CustomViewAsUsersDefaultViewResponse.cs | 2 +-
.../Models/Responses/CustomViewResponse.cs | 2 +-
.../Models/Responses/CustomViewsResponse.cs | 2 +-
.../Models/Responses/DataSourceResponse.cs | 9 +-
.../Models/Responses/DataSourcesResponse.cs | 9 +-
.../Responses/EmptyTableauServerResponse.cs | 2 +-
.../Models/Responses/FavoritesResponse.cs | 2 +-
.../Models/Responses/FileUploadResponse.cs | 2 +-
.../Api/Rest/Models/Responses/FlowResponse.cs | 2 +-
.../Rest/Models/Responses/FlowsResponse.cs | 2 +-
.../Rest/Models/Responses/GroupResponse.cs | 2 +-
.../Rest/Models/Responses/GroupSetResponse.cs | 2 +-
.../Models/Responses/GroupSetsResponse.cs | 2 +-
.../Rest/Models/Responses/GroupsResponse.cs | 2 +-
.../Models/Responses/IExtractRefreshType.cs | 2 +-
.../IExtractRefreshTypeExtensions.cs | 2 +-
.../IScheduleFrequencyDetailsType.cs | 2 +-
.../Models/Responses/IScheduleIntervalType.cs | 2 +-
.../Responses/IScheduleReferenceType.cs | 2 +-
.../Responses/ISubscriptionContentType.cs | 2 +-
.../ISubscriptionContentTypeExtensions.cs | 40 +
.../Models/Responses/ImportJobResponse.cs | 2 +-
.../Api/Rest/Models/Responses/JobResponse.cs | 2 +-
.../Rest/Models/Responses/LabelsResponse.cs | 2 +-
.../Rest/Models/Responses/MetricsResponse.cs | 2 +-
.../Responses/PagedTableauServerResponse.cs | 2 +-
.../Models/Responses/PermissionsResponse.cs | 2 +-
.../Rest/Models/Responses/ProjectsResponse.cs | 2 +-
.../Responses/RetrieveKeychainResponse.cs | 2 +-
.../RetrieveSavedCredentialsResponse.cs | 2 +-
.../Server/ExtractRefreshTaskResponse.cs | 176 ++
.../Server/ExtractRefreshTasksResponse.cs | 2 +-
.../Server/GetSubscriptionResponse.cs | 168 ++
.../Server/GetSubscriptionsResponse.cs | 8 +-
.../Server/IServerExtractRefreshType.cs | 2 +-
.../Responses/Server/IServerScheduleType.cs | 2 +-
.../ScheduleExtractRefreshTasksResponse.cs | 2 +-
.../Responses/Server/ScheduleResponse.cs | 2 +-
.../Models/Responses/ServerInfoResponse.cs | 2 +-
.../Models/Responses/ServerSessionResponse.cs | 2 +-
.../Rest/Models/Responses/SignInResponse.cs | 2 +-
.../SiteAuthConfigurationsResponse.cs | 2 +-
.../Api/Rest/Models/Responses/SiteResponse.cs | 2 +-
.../Rest/Models/Responses/SitesResponse.cs | 2 +-
.../Responses/TableauServerListResponse.cs | 2 +-
.../Models/Responses/TableauServerResponse.cs | 2 +-
.../Responses/UpdateCustomViewResponse.cs | 2 +-
.../Responses/UpdateDataSourceResponse.cs | 2 +-
.../Models/Responses/UpdateProjectResponse.cs | 2 +-
.../Models/Responses/UpdateUserResponse.cs | 2 +-
.../Responses/UpdateWorkbookResponse.cs | 2 +-
.../Api/Rest/Models/Responses/UserResponse.cs | 2 +-
.../Rest/Models/Responses/UsersResponse.cs | 2 +-
...sersWithCustomViewAsDefaultViewResponse.cs | 2 +-
.../Api/Rest/Models/Responses/ViewResponse.cs | 2 +-
.../Responses/VirtualConnectionsResponse.cs | 2 +-
.../Rest/Models/Responses/WorkbookResponse.cs | 2 +-
.../Models/Responses/WorkbookViewsResponse.cs | 118 ++
.../Models/Responses/WorkbooksResponse.cs | 2 +-
.../Api/Rest/Models/RestProjectBuilder.cs | 4 +-
.../Rest/Models/RestProjectBuilderPager.cs | 2 +-
.../Rest/Models/RestProjectResponsePager.cs | 2 +-
...cheduleExtractRefreshTasksResponsePager.cs | 2 +-
.../Api/Rest/Models/SiteRoleMapping.cs | 2 +-
.../Api/Rest/Models/SiteRoleMappingItem.cs | 2 +-
.../Api/Rest/Models/SiteRoles.cs | 2 +-
.../Rest/Models/Types/AuthenticationTypes.cs | 2 +-
.../Api/Rest/Models/Types/CapabilityType.cs | 2 +-
.../Rest/Models/Types/CustomViewFileTypes.cs | 2 +-
.../Rest/Models/Types/DataSourceFileTypes.cs | 2 +-
.../Rest/Models/Types/ExtractRefreshType.cs | 2 +-
.../Api/Rest/Models/Types/FlowFileTypes.cs | 2 +-
.../Models/Types/GranteeCapabilityType.cs | 67 +-
.../Rest/Models/Types/ParentContentType.cs | 2 +-
.../Types/PermissionsContentItemType.cs | 2 +-
.../Api/Rest/Models/Types/PermissionsType.cs | 2 +-
.../Rest/Models/Types/ScheduleFrequencies.cs | 2 +-
.../Api/Rest/Models/Types/ScheduleTypes.cs | 2 +-
.../Api/Rest/Models/Types/WeekDays.cs | 2 +-
.../Rest/Models/Types/WorkbookFileTypes.cs | 2 +-
.../Api/Rest/PermissionsUriBuilder.cs | 2 +-
.../Api/Rest/RestErrorCodes.cs | 2 +-
.../Api/Rest/RestException.cs | 2 +-
.../Api/Rest/RestUrlKeywords.cs | 2 +-
.../Api/Rest/RestUrlPrefixes.cs | 2 +-
.../Api/Rest/StringExtensions.cs | 2 +-
.../Api/Rest/TagsUriBuilder.cs | 2 +-
.../Api/SchedulesApiClient.cs | 2 +-
.../Api/SchedulesApiClientFactory.cs | 2 +-
.../Api/ScopedApiClientFactory.cs | 8 +-
.../Search/ApiContentReferenceCacheBase.cs | 45 +
.../ApiContentReferenceFinderFactory.cs | 2 +-
.../Api/Search/ApiContentReferenceStore.cs | 127 ++
...ContentCache.cs => BulkApiContentCache.cs} | 34 +-
.../Search/BulkApiContentReferenceCache.cs | 99 +-
.../Api/ServerSessionProvider.cs | 2 +-
.../ITableauApiSimulatorCollection.cs | 2 +-
.../Simulation/ITableauApiSimulatorFactory.cs | 2 +-
.../Rest/Api/AuthRestApiSimulator.cs | 2 +-
.../Rest/Api/CustomViewsRestApiSimulator.cs | 2 +-
.../Rest/Api/DataSourcesRestApiSimulator.cs | 2 +-
...EmbeddedCredentialsRestApiSimulatorBase.cs | 2 +-
.../Rest/Api/FavoritesRestApiSimulator.cs | 2 +-
.../Rest/Api/FileUploadsRestApiSimulator.cs | 2 +-
.../Rest/Api/GroupSetsRestApiSimulator.cs | 2 +-
.../Rest/Api/GroupsRestApiSimulator.cs | 2 +-
.../Rest/Api/JobsRestApiSimulator.cs | 2 +-
.../Api/PermissionsRestApiSimulatorBase.cs | 2 +-
.../Rest/Api/ProjectsRestApiSimulator.cs | 2 +-
.../Rest/Api/SchedulesRestApiSimulator.cs | 2 +-
.../Rest/Api/SitesRestApiSimulator.cs | 2 +-
.../Rest/Api/SubscriptionsRestApiSimulator.cs | 2 +-
.../Rest/Api/TagsRestApiSimulatorBase.cs | 2 +-
.../Rest/Api/TasksRestApiSimulator.cs | 2 +-
.../Rest/Api/UsersRestApiSimulator.cs | 2 +-
.../Rest/Api/ViewsRestApiSimulator.cs | 25 +-
.../Rest/Api/WorkbooksRestApiSimulator.cs | 64 +-
.../Rest/MethodSimulatorExtensions.cs | 2 +-
.../Rest/Net/HttpStatusCodeExtensions.cs | 2 +-
.../Rest/Net/Requests/FilterExtensions.cs | 2 +-
.../Requests/HttpRequestMessageExtensions.cs | 2 +-
.../Net/Requests/RestApiRequestMatcher.cs | 2 +-
.../Rest/Net/Requests/RestUrlPatterns.cs | 2 +-
.../Rest/Net/Requests/UriExtensions.cs | 2 +-
.../Rest/Net/ResponseSimulatorExtensions.cs | 2 +-
.../Net/Responses/BuildResponseException.cs | 2 +-
.../Net/Responses/EmptyRestResponseBuilder.cs | 2 +-
.../Net/Responses/IEntityResponsePager.cs | 2 +-
.../Net/Responses/IRestApiResponseBuilder.cs | 2 +-
.../IRestApiResponseBuilderExtensions.cs | 2 +-
.../Rest/Net/Responses/IRestErrorBuilder.cs | 2 +-
.../RestAddFavoriteResponseBuilder.cs | 2 +-
...stCommitCustomViewUploadResponseBuilder.cs | 2 +-
...stCommitDataSourceUploadResponseBuilder.cs | 2 +-
.../RestCommitUploadResponseBuilder.cs | 2 +-
...RestCommitWorkbookUploadResponseBuilder.cs | 2 +-
.../RestCreateSubscriptionResponseBuilder.cs | 2 +-
...ustomViewDefaultUsersAddResponseBuilder.cs | 2 +-
...DefaultPermissionsCreateResponseBuilder.cs | 2 +-
.../RestDeleteByIdResponseBuilder.cs | 2 +-
.../Responses/RestDeleteResponseBuilder.cs | 2 +-
.../RestDownloadFileByIdResponseBuilder.cs | 2 +-
.../RestEntityIdResponseBuilderBase.cs | 2 +-
.../RestEntityListResponseBuilderBase.cs | 2 +-
.../Net/Responses/RestEntityResponsePager.cs | 2 +-
...ExtractRefreshTaskCreateResponseBuilder.cs | 2 +-
.../RestGetByContentUrlResponseBuilder.cs | 2 +-
.../Responses/RestGetByIdResponseBuilder.cs | 2 +-
.../RestGetFavoritesForUserResponseBuilder.cs | 2 +-
.../Responses/RestGetSitesResponseBuilder.cs | 2 +-
.../Responses/RestGroupAddResponseBuilder.cs | 2 +-
.../RestGroupSetCreateResponseBuilder.cs | 2 +-
.../RestInitiateFileUploadResponseBuilder.cs | 2 +-
.../Net/Responses/RestListResponseBuilder.cs | 2 +-
.../Responses/RestPagedListResponseBuilder.cs | 2 +-
.../RestPermissionsCreateResponseBuilder.cs | 2 +-
.../RestPermissionsGetResponseBuilder.cs | 2 +-
.../RestPostEntityResponseBuilder.cs | 2 +-
.../RestProjectCreateResponseBuilder.cs | 2 +-
.../Responses/RestPutByIdResponseBuilder.cs | 2 +-
.../Responses/RestRequestResponseBuilder.cs | 2 +-
.../Net/Responses/RestResponseBuilderBase.cs | 2 +-
.../RestSearchEntityResponseBuilderBase.cs | 2 +-
.../RestSingleEntityResponseBuilder.cs | 2 +-
.../RestUpdateConnectionResponseBuilder.cs | 2 +-
.../RestUpdateFileUploadResponseBuilder.cs | 2 +-
.../RestUpdateSubscriptionResponseBuilder.cs | 2 +-
.../Responses/RestUserAddResponseBuilder.cs | 2 +-
.../RestUserAddToGroupResponseBuilder.cs | 2 +-
.../RestUserImportResponseBuilder.cs | 2 +-
.../RestUserUpdateResponseBuilder.cs | 2 +-
.../Net/Responses/StaticRestErrorBuilder.cs | 2 +-
.../Responses/UnauthorizedRestErrorBuilder.cs | 2 +-
.../Api/Simulation/Rest/RestApiSimulator.cs | 2 +-
.../Api/Simulation/SimulatedConnection.cs | 2 +-
.../SimulatedConnectionCredentials.cs | 2 +-
.../Api/Simulation/SimulatedCustomViewData.cs | 2 +-
.../Api/Simulation/SimulatedDataSourceData.cs | 2 +-
.../SimulatedDataWithConnections.cs | 2 +-
.../Api/Simulation/SimulatedWorkbookData.cs | 2 +-
.../Simulation/TableauApiResponseSimulator.cs | 2 +-
.../TableauApiResponseSimulatorProvider.cs | 2 +-
.../Api/Simulation/TableauApiSimulator.cs | 2 +-
.../TableauApiSimulatorCollection.cs | 2 +-
.../Simulation/TableauApiSimulatorFactory.cs | 2 +-
.../Api/Simulation/TableauData.cs | 2 +-
src/Tableau.Migration/Api/SitesApiClient.cs | 10 +-
.../Api/SubscriptionsApiClient.cs | 218 ++-
.../Api/TableauServerVersion.cs | 2 +-
.../Api/TableauServerVersionProvider.cs | 2 +-
.../Api/TableauSiteConnectionConfiguration.cs | 6 +-
.../Api/Tags/ITagsApiClient.cs | 2 +-
.../Api/Tags/ITagsApiClientFactory.cs | 2 +-
.../Api/Tags/ITagsContentApiClient.cs | 2 +-
.../Api/Tags/TagsApiClient.cs | 2 +-
.../Api/Tags/TagsApiClientFactory.cs | 2 +-
src/Tableau.Migration/Api/TasksApiClient.cs | 51 +-
src/Tableau.Migration/Api/UsersApiClient.cs | 64 +-
.../Api/UsersResponseExtensions.cs | 2 +-
src/Tableau.Migration/Api/ViewsApiClient.cs | 26 +-
.../Api/ViewsApiClientFactory.cs | 11 +-
src/Tableau.Migration/Api/WorkbookView.cs | 66 +
.../Api/WorkbooksApiClient.cs | 83 +-
.../AsyncDisposableResult.cs | 2 +-
src/Tableau.Migration/ComparerBase.cs | 2 +-
.../ConcurrentDictionaryExtensions.cs | 2 +-
src/Tableau.Migration/Config/CacheOptions.cs | 2 +-
src/Tableau.Migration/Config/ConfigReader.cs | 2 +-
.../Config/ContentTypesOptions.cs | 18 +-
.../DefaultPermissionsContentTypeOptions.cs | 2 +-
src/Tableau.Migration/Config/FileOptions.cs | 2 +-
src/Tableau.Migration/Config/IConfigReader.cs | 2 +-
src/Tableau.Migration/Config/JobOptions.cs | 2 +-
.../Config/MigrationSDKOptions.cs | 2 +-
.../Config/NetworkOptions.cs | 2 +-
.../Config/PreflightOptions.cs | 2 +-
.../Config/ResilienceOptions.cs | 2 +-
.../Config/UniqueContentTypesValidator.cs | 2 +-
src/Tableau.Migration/Constants.cs | 12 +-
.../Content/AuthenticationConfiguration.cs | 2 +-
.../Content/CloudSubscription.cs | 24 +-
.../Content/ConcurrentSet.cs | 2 +-
src/Tableau.Migration/Content/Connection.cs | 2 +-
.../Content/ContainerContentBase.cs | 2 +-
src/Tableau.Migration/Content/ContentBase.cs | 2 +-
.../Content/ContentLocationComparer.cs | 2 +-
.../Content/ContentReferenceStub.cs | 2 +-
src/Tableau.Migration/Content/CustomView.cs | 2 +-
src/Tableau.Migration/Content/DataSource.cs | 9 +-
.../Content/DataSourceDetails.cs | 2 +-
src/Tableau.Migration/Content/Favorite.cs | 2 +-
.../Content/FavoriteContentType.cs | 7 +-
.../Content/FavoriteContentTypeExtensions.cs | 2 +-
.../Content/Files/Aes256EncryptionFactory.cs | 2 +-
.../Content/Files/ContentFileHandle.cs | 2 +-
.../Content/Files/ContentFileStream.cs | 2 +-
.../Files/ContentTypeDirectoryNames.cs | 2 +-
.../Files/ContentTypeFilePathResolver.cs | 2 +-
.../Content/Files/ContentTypeFilePrefixes.cs | 2 +-
.../Files/DirectoryContentFileStore.cs | 2 +-
.../Content/Files/EncryptedFileHandle.cs | 2 +-
.../Content/Files/EncryptedFileStore.cs | 2 +-
.../Content/Files/EncryptedFileStream.cs | 2 +-
.../Content/Files/IContentFileHandle.cs | 2 +-
.../Files/IContentFileHandleExtensions.cs | 2 +-
.../Content/Files/IContentFilePathResolver.cs | 2 +-
.../Content/Files/IContentFileStore.cs | 2 +-
.../Content/Files/IContentFileStream.cs | 2 +-
.../Files/ISymmetricEncryptionFactory.cs | 2 +-
.../Content/Files/ITableauFileEditor.cs | 2 +-
.../Content/Files/ITableauFileXmlStream.cs | 2 +-
.../Content/Files/SeekableCryptoStream.cs | 2 +-
.../Content/Files/StreamExtensions.cs | 2 +-
.../Content/Files/TableauFileEditor.cs | 2 +-
.../Content/Files/TableauFileXmlStream.cs | 2 +-
.../TemporaryDirectoryContentFileStore.cs | 2 +-
.../Content/Files/Xml/XContainerExtensions.cs | 2 +-
.../Content/Files/Xml/XElementExtensions.cs | 2 +-
.../Content/Files/Xml/XFeatureFlagName.cs | 2 +-
.../Content/Files/Xml/XNameExtensions.cs | 2 +-
src/Tableau.Migration/Content/Flow.cs | 2 +-
src/Tableau.Migration/Content/Group.cs | 2 +-
src/Tableau.Migration/Content/GroupSet.cs | 2 +-
src/Tableau.Migration/Content/GroupUser.cs | 2 +-
.../Content/IAuthenticationConfiguration.cs | 2 +-
.../Content/IChildPermissionsContent.cs | 2 +-
.../Content/ICloudSubscription.cs | 2 +-
src/Tableau.Migration/Content/IConnection.cs | 2 +-
.../Content/IConnectionsContent.cs | 2 +-
.../Content/IContainerContent.cs | 2 +-
.../Content/IContentReferenceExtensions.cs | 2 +-
src/Tableau.Migration/Content/ICustomView.cs | 2 +-
src/Tableau.Migration/Content/IDataSource.cs | 3 +-
.../Content/IDataSourceDetails.cs | 2 +-
src/Tableau.Migration/Content/IDelible.cs | 2 +-
.../Content/IDescriptionContent.cs | 2 +-
.../Content/IExtractContent.cs | 2 +-
src/Tableau.Migration/Content/IFavorite.cs | 4 +-
src/Tableau.Migration/Content/IFileContent.cs | 2 +-
src/Tableau.Migration/Content/IFlow.cs | 2 +-
src/Tableau.Migration/Content/IGroup.cs | 2 +-
src/Tableau.Migration/Content/IGroupSet.cs | 2 +-
src/Tableau.Migration/Content/IGroupUser.cs | 2 +-
src/Tableau.Migration/Content/ILabel.cs | 2 +-
.../Content/IMappableContainerContent.cs | 2 +-
.../Content/IMappableContent.cs | 2 +-
.../Content/IPermissionsContent.cs | 2 +-
src/Tableau.Migration/Content/IProject.cs | 2 +-
.../Content/IPublishableCustomView.cs | 2 +-
.../Content/IPublishableDataSource.cs | 2 +-
.../Content/IPublishableFlow.cs | 2 +-
.../Content/IPublishableGroup.cs | 2 +-
.../Content/IPublishableGroupSet.cs | 2 +-
.../Content/IPublishableWorkbook.cs | 2 +-
.../Content/IPublishedContent.cs | 2 +-
.../IRequiresEmbeddedCredentialMigration.cs | 2 +-
.../Content/IRequiresLabelUpdate.cs | 2 +-
.../Content/IRequiresOwnerUpdate.cs | 2 +-
.../Content/IServerSession.cs | 2 +-
.../Content/IServerSubscription.cs | 2 +-
src/Tableau.Migration/Content/ISite.cs | 2 +-
.../Content/ISiteSettings.cs | 2 +-
.../Content/ISiteSettingsUpdate.cs | 2 +-
.../ISizeContent.cs} | 17 +-
.../Content/ISubscription.cs | 2 +-
.../Content/ISubscriptionContent.cs | 18 +-
.../Content/ITableauCollection.cs | 2 +-
src/Tableau.Migration/Content/ITag.cs | 2 +-
.../Content/ITagExtensions.cs | 2 +-
src/Tableau.Migration/Content/IUser.cs | 2 +-
.../Content/IUsernameContent.cs | 2 +-
src/Tableau.Migration/Content/IView.cs | 5 +-
.../Content/IWithConnections.cs | 2 +-
src/Tableau.Migration/Content/IWithDomain.cs | 2 +-
.../Content/IWithEmbeddedCredentials.cs | 2 +-
src/Tableau.Migration/Content/IWithLabels.cs | 2 +-
src/Tableau.Migration/Content/IWithOwner.cs | 2 +-
src/Tableau.Migration/Content/IWithTags.cs | 2 +-
.../Content/IWithWorkbook.cs | 2 +-
src/Tableau.Migration/Content/IWorkbook.cs | 8 +-
.../Content/IWorkbookDetails.cs | 2 +-
src/Tableau.Migration/Content/Label.cs | 2 +-
.../Content/MappableContainerContentBase.cs | 2 +-
.../Content/MappableContentBase.cs | 2 +-
.../Content/Permissions/Capability.cs | 2 +-
...efaultPermissionsContentTypeUrlSegments.cs | 2 +-
.../Content/Permissions/GranteeCapability.cs | 20 +-
.../Content/Permissions/GranteeType.cs | 9 +-
.../Permissions/GranteeTypeExtensions.cs | 3 +-
.../Content/Permissions/ICapability.cs | 2 +-
.../Permissions/ICapabilityComparer.cs | 2 +-
.../Content/Permissions/IGranteeCapability.cs | 13 +-
.../IGranteeCapabilityExtensions.cs | 3 +-
.../Content/Permissions/IPermissionSet.cs | 2 +-
.../Content/Permissions/IPermissions.cs | 2 +-
.../Content/Permissions/Permissions.cs | 15 +-
src/Tableau.Migration/Content/Project.cs | 2 +-
.../Content/PublishableCustomView.cs | 2 +-
.../Content/PublishableDataSource.cs | 2 +-
.../Content/PublishableFlow.cs | 2 +-
.../Content/PublishableGroup.cs | 2 +-
.../Content/PublishableGroupSet.cs | 2 +-
.../Content/PublishableWorkbook.cs | 2 +-
.../Cloud/CloudExtractRefreshTask.cs | 16 +-
.../Content/Schedules/Cloud/CloudSchedule.cs | 2 +-
.../Schedules/Cloud/CloudScheduleValidator.cs | 2 +-
.../Cloud/ICloudExtractRefreshTask.cs | 2 +-
.../Content/Schedules/Cloud/ICloudSchedule.cs | 2 +-
.../Schedules/ExtractRefreshContentType.cs | 2 +-
.../Schedules/ExtractRefreshTaskBase.cs | 2 +-
.../Content/Schedules/FrequencyDetails.cs | 2 +-
.../Content/Schedules/IExtractRefreshTask.cs | 2 +-
.../Content/Schedules/IFrequencyDetails.cs | 2 +-
.../Content/Schedules/IFrequencyExtensions.cs | 2 +-
.../Content/Schedules/IInterval.cs | 2 +-
.../Content/Schedules/ISchedule.cs | 2 +-
.../Content/Schedules/IScheduleValidator.cs | 2 +-
.../Content/Schedules/IWithSchedule.cs | 2 +-
.../Content/Schedules/Interval.cs | 2 +-
.../Content/Schedules/IntervalComparer.cs | 2 +-
.../Content/Schedules/IntervalValues.cs | 2 +-
.../Schedules/InvalidScheduleException.cs | 2 +-
.../Content/Schedules/ScheduleBase.cs | 2 +-
.../Content/Schedules/ScheduleComparers.cs | 2 +-
.../Server/IScheduleExtractRefreshTask.cs | 2 +-
.../Server/IScheduleExtractRefreshTasks.cs | 2 +-
.../Server/IServerExtractRefreshTask.cs | 2 +-
.../Schedules/Server/IServerSchedule.cs | 2 +-
.../Server/ScheduleExtractRefreshTask.cs | 2 +-
.../Server/ScheduleExtractRefreshTasks.cs | 2 +-
.../Server/ServerExtractRefreshTask.cs | 16 +-
.../Schedules/Server/ServerSchedule.cs | 2 +-
.../Server/ServerScheduleValidator.cs | 2 +-
.../Content/Schedules/VolatileCache.cs | 2 +-
.../BulkContentReferenceCacheLoadStrategy.cs | 46 +
.../Search/CachedContentReferenceFinder.cs | 2 +-
.../Content/Search/ContentCacheFactory.cs | 2 +-
.../Search/ContentReferenceCacheBase.cs | 196 ++-
.../ContentReferenceCacheLoadAttempt.cs | 51 +
.../Search/ContentReferenceLoadResult.cs | 50 +
.../Content/Search/IContentCache.cs | 2 +-
.../Content/Search/IContentCacheFactory.cs | 2 +-
.../Content/Search/IContentReferenceCache.cs | 10 +-
.../IContentReferenceCacheLoadAttempt.cs | 51 +
.../IContentReferenceCacheLoadStrategy.cs | 40 +
.../Content/Search/IContentReferenceFinder.cs | 2 +-
.../Search/IContentReferenceFinderFactory.cs | 23 +-
.../Content/Search/IContentReferenceStore.cs | 63 +
.../LazyContentReferenceCacheLoadStrategy.cs | 45 +
.../MissingContentReferenceExtensions.cs | 135 ++
.../Content/ServerSession.cs | 2 +-
.../Content/ServerSessionSettings.cs | 2 +-
.../Content/ServerSubscription.cs | 62 +-
src/Tableau.Migration/Content/Site.cs | 2 +-
.../Content/SiteSettingsUpdate.cs | 2 +-
.../Content/SubscriptionBase.cs | 39 +-
.../Content/SubscriptionContent.cs | 29 +-
.../Content/SubscriptionContentType.cs | 40 +
src/Tableau.Migration/Content/Tag.cs | 2 +-
.../Content/TagLabelComparer.cs | 2 +-
src/Tableau.Migration/Content/User.cs | 2 +-
.../Content/UserAuthenticationType.cs | 2 +-
.../Content/UsernameContentBase.cs | 2 +-
src/Tableau.Migration/Content/View.cs | 2 +-
src/Tableau.Migration/Content/Workbook.cs | 2 +-
.../Content/WorkbookDetails.cs | 2 +-
src/Tableau.Migration/ContentLocation.cs | 91 +-
src/Tableau.Migration/CsvExtensions.cs | 2 +-
src/Tableau.Migration/DateTimeExtensions.cs | 2 +-
.../Engine/Actions/IMigrateContentAction.cs | 2 +-
.../Engine/Actions/IMigrationAction.cs | 8 +-
.../Engine/Actions/IMigrationActionResult.cs | 2 +-
.../Engine/Actions/MigrateContentAction.cs | 5 +-
.../Engine/Actions/MigrationActionResult.cs | 2 +-
.../Engine/Actions/PreflightAction.cs | 5 +-
.../Caching/ConfigurableMigrationCacheBase.cs | 2 +-
.../Engine/Caching/IMigrationCache.cs | 2 +-
.../Engine/ContentMigrationItem.cs | 2 +-
.../Conversion/DirectContentItemConverter.cs | 2 +-
.../ExtractRefreshTaskConverterBase.cs | 2 +-
.../IExtractRefreshTaskConverter.cs | 2 +-
...erverToCloudExtractRefreshTaskConverter.cs | 2 +-
.../Conversion/IContentItemConverter.cs | 2 +-
.../Schedules/IScheduleConverter.cs | 2 +-
.../ServerToCloudScheduleConverter.cs | 2 +-
.../Subscriptions/ISubscriptionConverter.cs | 2 +-
.../ServerToCloudSubscriptionConverter.cs | 2 +-
.../SubscriptionConverterBase.cs | 2 +-
...ulkApiAuthenticationConfigurationsCache.cs | 4 +-
...ntentReferenceCacheLoadStrategyProvider.cs | 39 +
.../Endpoints/Caching/DestinationCache.cs | 107 ++
.../DestinationProjectCache.cs} | 35 +-
...ntentReferenceCacheLoadStrategyProvider.cs | 46 +
...nationAuthenticationConfigurationsCache.cs | 4 +-
.../Endpoints/Caching/IEndpointViewCache.cs | 2 +-
.../Caching/IEndpointWorkbookViewsCache.cs | 2 +-
.../ILockedProjectCache.cs | 4 +-
...nifestUpdateSourceContentReferenceCache.cs | 57 +
.../IUserSavedCredentialsCache.cs | 4 +-
...ntentReferenceCacheLoadStrategyProvider.cs | 39 +
.../Engine/Endpoints/Caching/SourceCache.cs | 145 ++
.../Caching/TableauApiEndpointViewCache.cs | 2 +-
.../TableauApiEndpointWorkbookViewsCache.cs | 4 +-
.../UserSavedCredentialsCache.cs | 4 +-
.../ContentClients/ContentClientBase.cs | 2 +-
.../ContentClients/FavoritesContentClient.cs | 2 +-
.../ContentClients/IContentClient.cs | 2 +-
.../ContentClients/IFavoritesContentClient.cs | 2 +-
.../ContentClients/IViewsContentClient.cs | 15 +-
.../ContentClients/IWorkbooksContentClient.cs | 2 +-
.../ContentClients/ViewsContentClient.cs | 25 +-
.../ContentClients/WorkbooksContentClient.cs | 2 +-
.../Endpoints/EmptyMigrationContentLoader.cs | 32 +
.../Endpoints/IDestinationApiEndpoint.cs | 2 +-
.../Engine/Endpoints/IDestinationEndpoint.cs | 2 +-
.../Engine/Endpoints/IMigrationApiEndpoint.cs | 2 +-
.../Endpoints/IMigrationContentLoader.cs | 36 +
.../Engine/Endpoints/IMigrationEndpoint.cs | 2 +-
.../Endpoints/IMigrationEndpointFactory.cs | 2 +-
.../IMigrationPlanEndpointBuilder.cs | 37 +
.../IMigrationPlanEndpointConfiguration.cs | 11 +-
.../Engine/Endpoints/ISourceApiEndpoint.cs | 2 +-
.../Engine/Endpoints/ISourceEndpoint.cs | 2 +-
.../ITableauApiEndpointConfiguration.cs | 2 +-
.../Endpoints/MigrationEndpointFactory.cs | 2 +-
.../Endpoints/MigrationPlanEndpointBuilder.cs | 37 +
.../Endpoints/Search/BulkDestinationCache.cs | 94 -
.../Endpoints/Search/BulkSourceCache.cs | 43 -
...stinationContentReferenceFinderFactory.cs} | 30 +-
.../Search/DestinationViewReferenceFinder.cs | 2 +-
.../IDestinationContentReferenceFinder.cs | 46 +-
...estinationContentReferenceFinderFactory.cs | 4 +-
.../Search/IDestinationViewReferenceFinder.cs | 2 +
.../Search/IMappedContentReferenceFinder.cs | 67 +
.../Search/ISourceContentReferenceFinder.cs | 2 +-
.../ISourceContentReferenceFinderFactory.cs | 2 +-
...nifestDestinationContentReferenceFinder.cs | 55 +-
.../ManifestSourceContentReferenceFinder.cs | 2 +-
...=> SourceContentReferenceFinderFactory.cs} | 31 +-
.../SourceEndpointMigrationContentLoader.cs | 43 +
.../TableauApiDestinationEndpoint.cs | 2 +-
.../Endpoints/TableauApiEndpointBase.cs | 2 +-
.../TableauApiEndpointConfiguration.cs | 9 +-
.../Endpoints/TableauApiSourceEndpoint.cs | 2 +-
.../Engine/Hooks/CallbackHookWrapper.cs | 2 +-
.../Hooks/ContentTypeHookBuilderBase.cs | 2 +-
.../Hooks/Filters/AsyncContentFilterBase.cs | 2 +-
.../Engine/Hooks/Filters/ContentFilterBase.cs | 2 +-
.../Hooks/Filters/ContentFilterBuilder.cs | 2 +-
.../Hooks/Filters/ContentFilterRunner.cs | 2 +-
.../Filters/ContentLocationInPathFilter.cs | 2 +-
.../Hooks/Filters/Default/FavoriteFilter.cs | 18 +-
.../Filters/Default/GroupAllUsersFilter.cs | 2 +-
.../Default/GroupAllUsersFilterOptions.cs | 2 +-
.../Filters/Default/LargeContentFilter.cs | 69 +
.../Default/PreviouslyMigratedFilter.cs | 2 +-
.../PreviouslyMigratedFilterOptions.cs | 2 +-
.../Default/ServerSubscriptionFilter.cs | 74 +
.../Hooks/Filters/Default/SkipAllFilter.cs | 42 +
.../Filters/Default/SystemOwnershipFilter.cs | 2 +-
.../Default/UserSiteRoleSupportUserFilter.cs | 2 +-
.../Engine/Hooks/Filters/IContentFilter.cs | 2 +-
.../Hooks/Filters/IContentFilterBuilder.cs | 2 +-
.../Hooks/Filters/IContentFilterRunner.cs | 2 +-
.../Hooks/Filters/RootContentFilterBase.cs | 2 +-
.../IContentBatchMigrationCompletedHook.cs | 2 +-
.../Engine/Hooks/IContentTypeHookBuilder.cs | 2 +-
.../Hooks/IMigrationActionCompletedHook.cs | 2 +-
.../Engine/Hooks/IMigrationHook.cs | 2 +-
.../Engine/Hooks/IMigrationHookBuilder.cs | 2 +-
.../Engine/Hooks/IMigrationHookFactory.cs | 2 +-
.../Hooks/IMigrationHookFactoryCollection.cs | 2 +-
.../Engine/Hooks/IMigrationHookRunner.cs | 2 +-
.../EmbeddedCredentialsCapabilityManager.cs | 2 +-
.../EndpointSettingCapabilityManagerBase.cs | 2 +-
.../GroupSetsCapabilityManager.cs | 2 +-
.../IMigrationCapabilityManager.cs | 2 +-
.../MigrationCapabilityManagerBase.cs | 2 +-
.../SubscriptionsCapabilityManager.cs | 2 +-
.../Default/InitializeCapabilitiesHook.cs | 2 +-
.../EndpointPreflightContext.cs | 2 +-
.../IEndpointPreflightContext.cs | 2 +-
.../IInitializeMigrationContext.cs | 2 +-
.../IInitializeMigrationHook.cs | 2 +-
.../IInitializeMigrationHookResult.cs | 2 +-
.../InitializeMigrationHookResult.cs | 2 +-
.../Hooks/Mappings/ContentMappingBase.cs | 2 +-
.../Hooks/Mappings/ContentMappingBuilder.cs | 2 +-
.../Hooks/Mappings/ContentMappingContext.cs | 2 +-
.../Hooks/Mappings/ContentMappingRunner.cs | 2 +-
.../AuthenticationTypeDomainMapping.cs | 2 +-
.../AuthenticationTypeDomainMappingBase.cs | 2 +-
.../AuthenticationTypeDomainMappingOptions.cs | 2 +-
...CallbackAuthenticationTypeDomainMapping.cs | 4 +-
.../Hooks/Mappings/Default/FavoriteMapping.cs | 2 +-
.../IAuthenticationTypeDomainMapping.cs | 2 +-
.../Default/ITableauCloudUsernameMapping.cs | 2 +-
.../Default/TableauCloudUsernameMapping.cs | 2 +-
.../TableauCloudUsernameMappingOptions.cs | 2 +-
.../Engine/Hooks/Mappings/IContentMapping.cs | 2 +-
.../Hooks/Mappings/IContentMappingBuilder.cs | 2 +-
.../Hooks/Mappings/IContentMappingRunner.cs | 2 +-
.../Engine/Hooks/MigrationHookBuilder.cs | 2 +-
.../Engine/Hooks/MigrationHookBuilderBase.cs | 2 +-
.../Engine/Hooks/MigrationHookFactory.cs | 2 +-
.../Hooks/MigrationHookFactoryCollection.cs | 2 +-
.../Engine/Hooks/MigrationHookRunner.cs | 2 +-
.../Engine/Hooks/MigrationHookRunnerBase.cs | 2 +-
.../PostPublish/BulkPostPublishContext.cs | 2 +-
.../PostPublish/BulkPostPublishHookBase.cs | 2 +-
.../ContentItemPostPublishContext.cs | 2 +-
.../ContentItemPostPublishHookBase.cs | 2 +-
.../ChildItemsPermissionsPostPublishHook.cs | 2 +-
.../Default/CleanupViewsPostPublishHook.cs | 151 ++
.../CustomViewDefaultUsersPostPublishHook.cs | 2 +-
.../DeleteUserFavoritesPostPublishHook.cs | 2 +-
.../EmbeddedCredentialsItemPostPublishHook.cs | 3 +-
.../Default/OwnerItemPostPublishHook.cs | 2 +-
.../Default/PermissionPostPublishHookBase.cs | 2 +-
.../Default/PermissionsItemPostPublishHook.cs | 2 +-
.../PopulateViewCachePostPublishHook.cs | 2 +-
.../Default/ProjectPostPublishHook.cs | 2 +-
.../Default/TagItemPostPublishHook.cs | 2 +-
.../Hooks/PostPublish/IBulkPostPublishHook.cs | 2 +-
.../IContentItemPostPublishHook.cs | 2 +-
.../Transformers/ContentTransformerBase.cs | 2 +-
.../Transformers/ContentTransformerBuilder.cs | 2 +-
.../Transformers/ContentTransformerRunner.cs | 2 +-
...tomViewDefaultUserReferencesTransformer.cs | 43 +-
.../Default/EncryptExtractTransformer.cs | 6 +-
.../Default/FavoriteTransformer.cs | 18 +-
.../Default/GroupSetGroupsTransformer.cs | 19 +-
.../Default/GroupUsersTransformer.cs | 38 +-
.../Default/IContentReferenceExtensions.cs | 44 -
.../Default/IPermissionsTransformer.cs | 2 +-
.../Default/IUserReferenceTransformer.cs | 2 +-
...dReferenceExtractRefreshTaskTransformer.cs | 45 +-
.../Default/MappedUserTransformer.cs | 72 -
.../Default/OwnershipTransformer.cs | 39 +-
.../Default/PermissionGranteeGroup.cs | 31 +
.../PermissionGranteeGroupEqualityComparer.cs | 35 +
.../Default/PermissionsTransformer.cs | 23 +-
.../Default/SubscriptionTransformer.cs | 30 +-
.../TableauServerConnectionUrlTransformer.cs | 40 +-
.../UserAuthenticationTypeTransformer.cs | 8 +-
...serAuthenticationTypeTransformerOptions.cs | 2 +-
.../UserTableauCloudSiteRoleTransformer.cs | 2 +-
.../Default/WorkbookReferenceTransformer.cs | 18 +-
.../Hooks/Transformers/IContentTransformer.cs | 2 +-
.../IContentTransformerBuilder.cs | 2 +-
.../Transformers/IContentTransformerRunner.cs | 2 +-
.../Transformers/IXmlContentTransformer.cs | 2 +-
.../Transformers/XmlContentTransformerBase.cs | 2 +-
src/Tableau.Migration/Engine/IMigration.cs | 2 +-
.../Engine/IMigrationExtensions.cs | 2 +-
.../Engine/IMigrationInput.cs | 2 +-
.../Engine/IMigrationInputInitializer.cs | 2 +-
.../Engine/IServiceCollectionExtensions.cs | 30 +-
.../IMigrationManifestContentTypePartition.cs | 2 +-
...ationManifestContentTypePartitionEditor.cs | 2 +-
.../Manifest/IMigrationManifestEditor.cs | 2 +-
.../Manifest/IMigrationManifestEntry.cs | 2 +-
.../IMigrationManifestEntryBuilder.cs | 2 +-
.../IMigrationManifestEntryCollection.cs | 2 +-
...IMigrationManifestEntryCollectionEditor.cs | 2 +-
.../Manifest/IMigrationManifestEntryEditor.cs | 2 +-
.../Manifest/IMigrationManifestFactory.cs | 2 +-
.../Logging/LoggingMigrationManifest.cs | 19 +-
...ngMigrationManifestContentTypePartition.cs | 5 +-
...LoggingMigrationManifestEntryCollection.cs | 2 +-
.../Engine/Manifest/MigrationManifest.cs | 35 +-
.../MigrationManifestContentTypePartition.cs | 2 +-
.../Engine/Manifest/MigrationManifestEntry.cs | 2 +-
.../MigrationManifestEntryCollection.cs | 2 +-
.../Manifest/MigrationManifestEntryStatus.cs | 2 +-
.../Manifest/MigrationManifestFactory.cs | 2 +-
.../Manifest/MigrationManifestSerializer.cs | 2 +-
src/Tableau.Migration/Engine/Migration.cs | 16 +-
.../MigrationDirectoryContentFileStore.cs | 2 +-
.../Engine/MigrationInput.cs | 2 +-
src/Tableau.Migration/Engine/MigrationPlan.cs | 7 +-
.../Engine/MigrationPlanBuilder.cs | 80 +-
.../Engine/MigrationPlanBuilderFactory.cs | 2 +-
.../Batch/BulkPublishContentBatchMigrator.cs | 2 +-
.../Batch/ContentBatchMigrationResult.cs | 2 +-
.../Batch/ContentBatchMigratorBase.cs | 2 +-
.../Migrators/Batch/ContentMigrationBatch.cs | 2 +-
.../Batch/IContentBatchMigrationResult.cs | 2 +-
.../Migrators/Batch/IContentBatchMigrator.cs | 2 +-
.../Batch/ItemPublishContentBatchMigrator.cs | 2 +-
.../Batch/ParallelContentBatchMigratorBase.cs | 2 +-
.../Migrators/ContentItemMigrationResult.cs | 2 +-
.../Engine/Migrators/ContentMigrator.cs | 15 +-
.../Migrators/IContentItemMigrationResult.cs | 2 +-
.../Engine/Migrators/IContentMigrator.cs | 2 +-
.../Engine/Migrators/Migrator.cs | 2 +-
.../Options/IMigrationPlanOptionsBuilder.cs | 2 +-
.../IMigrationPlanOptionsCollection.cs | 2 +-
.../Options/IMigrationPlanOptionsProvider.cs | 2 +-
.../Options/MigrationPlanOptionsBuilder.cs | 2 +-
.../Options/MigrationPlanOptionsCollection.cs | 2 +-
.../Options/MigrationPlanOptionsProvider.cs | 2 +-
.../CloudToCloudMigrationPipeline.cs | 7 +-
.../CustomMigrationPipelineFactory.cs | 2 +-
.../Engine/Pipelines/IMigrationPipeline.cs | 43 +-
.../Pipelines/IMigrationPipelineFactory.cs | 2 +-
.../Pipelines/IMigrationPipelineRunner.cs | 2 +-
.../Engine/Pipelines/MigrationPipelineBase.cs | 52 +-
.../Pipelines/MigrationPipelineContentType.cs | 2 +-
.../MigrationPipelineContentTypeExtensions.cs | 2 +-
.../Pipelines/MigrationPipelineFactory.cs | 2 +-
.../Pipelines/MigrationPipelineRunner.cs | 2 +-
.../ServerToCloudMigrationPipeline.cs | 7 +-
.../ServerToServerMigrationPipeline.cs | 7 +-
.../Pipelines/TableauMigrationPipelineBase.cs | 2 +-
.../Preparation/ContentItemPreparerBase.cs | 2 +-
.../EndpointContentItemPreparer.cs | 2 +-
...ExtractRefreshTaskServerToCloudPreparer.cs | 2 +-
.../Preparation/IContentItemPreparer.cs | 2 +-
.../Preparation/SourceContentItemPreparer.cs | 2 +-
.../ServerToCloudMigrationPlanBuilder.cs | 108 +-
.../Services/IMigrationServiceBuilder.cs | 63 +
.../IMigrationServiceBuilderFactory.cs | 35 +
.../IMigrationServiceFactoryCollection.cs | 50 +
.../Services/MigrationServiceBuilder.cs | 100 ++
.../MigrationServiceBuilderFactory.cs | 32 +
.../Services/MigrationServiceFactory.cs | 26 +
.../MigrationServiceFactoryContext.cs | 29 +
.../Engine/Services/MigrationServices.cs | 50 +
src/Tableau.Migration/EquatableException.cs | 2 +-
src/Tableau.Migration/ExceptionComparer.cs | 2 +-
src/Tableau.Migration/ExceptionExtensions.cs | 2 +-
src/Tableau.Migration/FilePath.cs | 2 +-
src/Tableau.Migration/Guard.cs | 2 +-
src/Tableau.Migration/HttpHeaderExtensions.cs | 2 +-
.../IAsyncDisposableResult.cs | 2 +-
src/Tableau.Migration/IContentReference.cs | 2 +-
.../IContentReferenceExtensions.cs | 2 +-
.../IDictionaryExtensions.cs | 2 +-
.../IEmptyIdContentReference.cs | 2 +-
.../IEnumerableExtensions.cs | 2 +-
src/Tableau.Migration/IMemoryStreamManager.cs | 2 +-
.../IMigrationCapabilities.cs | 2 +-
.../IMigrationCapabilitiesEditor.cs | 2 +-
src/Tableau.Migration/IMigrationManifest.cs | 2 +-
src/Tableau.Migration/IMigrationPlan.cs | 8 +-
.../IMigrationPlanBuilder.cs | 73 +-
.../IMigrationPlanBuilderFactory.cs | 2 +-
src/Tableau.Migration/IMigrationSdk.cs | 2 +-
src/Tableau.Migration/IMigrator.cs | 2 +-
src/Tableau.Migration/IResult.cs | 23 +-
.../IServerToCloudMigrationPlanBuilder.cs | 6 +-
.../IServiceCollectionExtensions.cs | 2 +-
src/Tableau.Migration/ISetExtensions.cs | 2 +-
src/Tableau.Migration/ITaskDelayer.cs | 2 +-
.../InheritedTypeComparer.cs | 2 +-
...ISyncContentBatchMigrationCompletedHook.cs | 2 +-
.../Hooks/ISyncInitializeMigrationHook.cs | 2 +-
.../ISyncMigrationActionCompletedHook.cs | 2 +-
.../Interop/Hooks/ISyncMigrationHook.cs | 2 +-
.../Interop/IServiceCollectionExtensions.cs | 41 +-
.../Interop/InteropHelper.cs | 2 +-
.../Interop/Logging/INonGenericLogger.cs | 2 +-
.../Interop/Logging/NonGenericLoggerBase.cs | 2 +-
.../Logging/NonGenericLoggerProvider.cs | 12 +-
.../BuildResponseExceptionJsonConverter.cs | 2 +-
.../JsonConverters/Constants.cs | 2 +-
.../JsonConverters/ExceptionJsonConverter.cs | 2 +-
.../ExceptionJsonConverterFactory.cs | 2 +-
.../Exceptions/MismatchException.cs | 2 +-
.../Exceptions/UnknownException.cs | 2 +-
.../FailedJobExceptionJsonConverter.cs | 2 +-
.../JsonConverters/JobJsonConverter.cs | 2 +-
.../JsonConverters/JsonReaderUtils.cs | 2 +-
.../JsonConverters/JsonWriterUtils.cs | 2 +-
.../PythonExceptionConverter.cs | 2 +-
.../RestExceptionJsonConverter.cs | 2 +-
.../SerializableContentLocation.cs | 2 +-
.../SerializableContentReference.cs | 2 +-
.../SerializableEntryCollection.cs | 2 +-
.../SerializableException.cs | 2 +-
.../SerializableManifestEntry.cs | 2 +-
.../SerializableMigrationManifest.cs | 2 +-
.../SerializedExceptionJsonConverter.cs | 2 +-
...eTypeNotSupportedExceptionJsonConverter.cs | 2 +-
.../TimeoutJobExceptionJsonConverter.cs | 2 +-
src/Tableau.Migration/MemoryStreamManager.cs | 2 +-
.../MigrationCapabilities.cs | 2 +-
.../MigrationCompletionStatus.cs | 2 +-
src/Tableau.Migration/MigrationResult.cs | 2 +-
src/Tableau.Migration/MigrationSdk.cs | 2 +-
src/Tableau.Migration/NameOf.cs | 2 +-
.../Net/DefaultHttpClient.cs | 2 +-
.../Net/DefaultHttpResponseMessage.cs | 2 +-
.../Net/Handlers/AuthenticationHttpHandler.cs | 2 +-
.../Net/Handlers/LoggingHttpHandler.cs | 2 +-
.../RequestCorrelationIdHeaderHttpHandler.cs | 2 +-
.../Handlers/UserAgentHeaderHttpHandler.cs | 2 +-
.../Net/HttpContentExtensions.cs | 2 +-
.../Net/HttpContentRequestBuilder.cs | 2 +-
.../Net/HttpContentSerializer.cs | 2 +-
.../Net/HttpDeleteRequestBuilder.cs | 2 +-
.../Net/HttpGetRequestBuilder.cs | 2 +-
.../Net/HttpPatchRequestBuilder.cs | 2 +-
.../Net/HttpPostRequestBuilder.cs | 2 +-
.../Net/HttpPutRequestBuilder.cs | 2 +-
.../Net/HttpRequestBuilder.cs | 2 +-
.../Net/HttpRequestBuilderFactory.cs | 2 +-
.../Net/HttpStreamProcessor.cs | 2 +-
src/Tableau.Migration/Net/IHttpClient.cs | 2 +-
.../Net/IHttpContentRequestBuilder.cs | 2 +-
.../Net/IHttpContentSerializer.cs | 2 +-
.../Net/IHttpDeleteRequestBuilder.cs | 2 +-
.../Net/IHttpGetRequestBuilder.cs | 2 +-
.../Net/IHttpPatchRequestBuilder.cs | 2 +-
.../Net/IHttpPostRequestBuilder.cs | 2 +-
.../Net/IHttpPutRequestBuilder.cs | 2 +-
.../Net/IHttpRequestBuilder.cs | 2 +-
.../Net/IHttpRequestBuilderFactory.cs | 2 +-
.../Net/IHttpResponseMessage.cs | 2 +-
.../Net/IHttpStreamProcessor.cs | 2 +-
.../Net/IQueryStringBuilder.cs | 2 +-
src/Tableau.Migration/Net/IRequestBuilder.cs | 2 +-
.../Net/IRequestBuilderFactory.cs | 2 +-
.../Net/IRequestBuilderFactoryInput.cs | 2 +-
.../IRequestBuilderFactoryInputInitializer.cs | 2 +-
.../Net/IServiceCollectionExtensions.cs | 11 +-
.../Net/ITableauSerializer.cs | 2 +-
.../Net/IUserAgentProvider.cs | 2 +-
src/Tableau.Migration/Net/JsonOptions.cs | 2 +-
.../Net/Logging/HttpActivityDetailsBuilder.cs | 2 +-
.../Net/Logging/HttpActivityLogger.cs | 22 +-
.../Net/Logging/HttpContentRedactor.cs | 2 +-
.../Net/Logging/IHttpActivityLogger.cs | 2 +-
.../Net/Logging/IHttpContentRedactor.cs | 2 +-
.../Net/MediaTypeHeaderValueExtensions.cs | 2 +-
src/Tableau.Migration/Net/MediaTypes.cs | 2 +-
src/Tableau.Migration/Net/ObjectExtensions.cs | 2 +-
.../Net/QueryStringBuilder.cs | 2 +-
src/Tableau.Migration/Net/RequestBuilder.cs | 2 +-
.../Net/RequestBuilderBase.cs | 2 +-
.../Net/RequestBuilderFactory.cs | 2 +-
.../Net/RequestBuilderFactoryInput.cs | 2 +-
.../ClientThrottleStrategyBuilder.cs | 2 +-
.../Resilience/IResilienceStrategyBuilder.cs | 2 +-
.../MaxConcurrencyStrategyBuilder.cs | 2 +-
.../RequestTimeoutStrategyBuilder.cs | 2 +-
.../Resilience/ResilienceContextExtensions.cs | 2 +-
.../Net/Resilience/RetryStrategyBuilder.cs | 18 +-
.../ServerThrottleStrategyBuilder.cs | 42 +-
.../Net/Rest/Fields/Field.cs | 2 +-
.../Net/Rest/Fields/FieldBuilder.cs | 2 +-
.../Net/Rest/Fields/IFieldBuilder.cs | 2 +-
.../Net/Rest/Filtering/Filter.cs | 2 +-
.../Net/Rest/Filtering/FilterBuilder.cs | 2 +-
.../Net/Rest/Filtering/FilterOperator.cs | 2 +-
.../Net/Rest/Filtering/IFilterBuilder.cs | 2 +-
.../Net/Rest/GuidExtensions.cs | 2 +-
.../Net/Rest/HttpRequestMessageExtensions.cs | 2 +-
.../Net/Rest/IRestRequestBuilder.cs | 2 +-
.../Net/Rest/IRestRequestBuilderFactory.cs | 2 +-
.../Rest/IRestRequestBuilderFactoryInput.cs | 31 +
...stRequestBuilderFactoryInputInitializer.cs | 39 +
.../Net/Rest/ListSortDirectionExtensions.cs | 2 +-
.../Net/Rest/Paging/IPageBuilder.cs | 2 +-
src/Tableau.Migration/Net/Rest/Paging/Page.cs | 2 +-
.../Net/Rest/Paging/PageBuilder.cs | 2 +-
src/Tableau.Migration/Net/Rest/RestHeaders.cs | 2 +-
.../Net/Rest/RestQueryBuilderBase.cs | 2 +-
.../Net/Rest/RestRequestBuilder.cs | 2 +-
.../Net/Rest/RestRequestBuilderFactory.cs | 8 +-
.../Rest/RestRequestBuilderFactoryInput.cs | 35 +
.../Net/Rest/Sorting/ISortBuilder.cs | 2 +-
.../Net/Rest/Sorting/Sort.cs | 2 +-
.../Net/Rest/Sorting/SortBuilder.cs | 2 +-
.../Net/Rest/UriExtensions.cs | 2 +-
.../Net/Simulation/BaseUrlComparer.cs | 2 +-
.../Net/Simulation/IResponseSimulator.cs | 2 +-
.../Simulation/IResponseSimulatorProvider.cs | 2 +-
.../Net/Simulation/MethodSimulator.cs | 2 +-
.../NullResponseSimulatorProvider.cs | 2 +-
.../Requests/IPathRequestMatcher.cs | 2 +-
.../Simulation/Requests/IRequestMatcher.cs | 2 +-
.../Simulation/Requests/PathRequestMatcher.cs | 2 +-
.../Responses/EmptyResponseBuilder.cs | 2 +-
.../Simulation/Responses/IResponseBuilder.cs | 2 +-
.../Responses/StaticStringResponseBuilder.cs | 2 +-
.../TooManyRequestsResponseBuilder.cs | 2 +-
.../Net/Simulation/SimulationHttpHandler.cs | 2 +-
.../Net/Simulation/UriExtensions.cs | 2 +-
src/Tableau.Migration/Net/StringExtensions.cs | 2 +-
.../Net/TableauSerializer.cs | 2 +-
.../Net/UserAgentProvider.cs | 2 +-
src/Tableau.Migration/ObjectExtensions.cs | 2 +-
.../Paging/BreadthFirstPathHierarchyPager.cs | 2 +-
src/Tableau.Migration/Paging/CallbackPager.cs | 2 +-
src/Tableau.Migration/Paging/IPageInfo.cs | 2 +-
src/Tableau.Migration/Paging/IPagedResult.cs | 19 +-
src/Tableau.Migration/Paging/IPager.cs | 2 +-
.../Paging/IndexedPagerBase.cs | 2 +-
src/Tableau.Migration/Paging/MemoryPager.cs | 19 +-
.../Paging/MemoryPagerBase.cs | 18 +-
src/Tableau.Migration/Paging/PagedResult.cs | 2 +-
src/Tableau.Migration/PipelineProfile.cs | 2 +-
.../Properties/AssemblyInfo.cs | 2 +-
.../Resources/AllUsersTranslations.cs | 2 +-
...efaultExternalAssetsProjectTranslations.cs | 2 +-
.../Resources/ISharedResourcesLocalizer.cs | 2 +-
.../Resources/SharedResourceKeys.cs | 237 ++-
.../Resources/SharedResources.resx | 99 +-
.../Resources/SharedResourcesLocalizer.cs | 2 +-
src/Tableau.Migration/Result.cs | 2 +-
src/Tableau.Migration/ResultBuilder.cs | 2 +-
src/Tableau.Migration/StreamExtensions.cs | 2 +-
src/Tableau.Migration/StreamProcessorBase.cs | 2 +-
src/Tableau.Migration/StringEnum.cs | 2 +-
.../Tableau.Migration.csproj | 18 +-
src/Tableau.Migration/TableauInstanceType.cs | 2 +-
.../TableauInstanceTypeExtensions.cs | 2 +-
...ableauInstanceTypeNotSupportedException.cs | 2 +-
src/Tableau.Migration/TaskDelayer.cs | 2 +-
src/Tableau.Migration/TaskExtensions.cs | 2 +-
src/Tableau.Migration/TypeExtensions.cs | 2 +-
src/Tableau.Migration/ValidationExtensions.cs | 2 +-
src/Tableau.Migration/packages.lock.json | 645 +++----
.../pyproject.toml | 16 +-
.../requirements.txt | 20 +-
.../tests/__init__.py | 7 +-
.../tests/helpers/autofixture.py | 2 +-
.../tests/test_default_project_filter.py | 2 +-
.../tests/test_log_migration_batches_hook.py | 2 +-
tests/Python.TestApplication/build.py | 2 +-
tests/Python.TestApplication/helper.py | 2 +-
tests/Python.TestApplication/main.py | 2 +-
.../migration_testcomponents_filters.py | 2 +-
.../migration_testcomponents_hooks.py | 2 +-
.../migration_testcomponents_mappings.py | 8 +-
.../migration_testcomponents_transformers.py | 2 +-
tests/Python.TestApplication/pyproject.toml | 10 +-
tests/Python.TestApplication/requirements.txt | 6 +-
.../packages.lock.json | 1516 +++++++++++++++++
.../ActivityEnricher.cs | 2 +-
.../Config/DomainOptions.cs | 2 +-
.../Config/EndpointOptions.cs | 4 +-
.../Config/LogOptions.cs | 2 +-
.../Config/SkipIdsOptions.cs | 2 +-
.../Config/SpecialUsersOptions.cs | 2 +-
.../Config/TestApplicationOptions.cs | 2 +-
.../TimeLoggerAfterActionHook.cs | 8 +-
.../LogMigrationBatchSummaryHook.cs | 2 +-
...anifestAfterBatchMigrationCompletedHook.cs | 2 +-
.../Hooks/Filters/NonDomainUserFilter.cs | 2 +-
.../Filters/SkipByParentLocationFilter.cs | 2 +-
.../Hooks/Filters/SkipIdsFilter.cs | 2 +-
.../Hooks/Filters/SpecialUserFilter.cs | 2 +-
.../Hooks/Filters/UnlicensedUserFilter.cs | 2 +-
.../ContentWithinSkippedLocationMapping.cs | 2 +-
.../Hooks/Mappings/SpecialUserMapping.cs | 2 +-
.../TestTableauCloudUsernameMapping.cs | 2 +-
.../TestTableauCloudUsernameOptions.cs | 2 +-
.../Hooks/Mappings/UnlicensedUserMapping.cs | 2 +-
...ngDestinationUsersFromGroupsTransformer.cs | 2 +-
.../Transformers/ViewerOwnerTransformer.cs | 2 +-
.../IServiceCollectionExtensions.cs | 3 +-
.../LogFileHelper.cs | 2 +-
.../MigrationSummaryBuilder.cs | 2 +-
.../Program.cs | 2 +-
.../SerilogExtensions.cs | 2 +-
.../Tableau.Migration.TestApplication.csproj | 16 +-
.../TestApplication.cs | 14 +-
.../appsettings.json | 3 +-
.../packages.lock.json | 616 +++----
.../AutoFixtureTestBase.cs | 2 +-
.../AutoFixtureTestBaseTests.cs | 2 +-
.../BaseUriComparer.cs | 2 +-
.../CultureNameTestDataAttribute.cs | 2 +-
tests/Tableau.Migration.Tests/CultureSilo.cs | 2 +-
.../EnumDataAttribute.cs | 2 +-
.../ExceptionComparerTests.cs | 2 +-
.../Tableau.Migration.Tests/FixtureFactory.cs | 3 +-
.../HttpContentExtensions.cs | 2 +-
.../HttpMessageHandlerExtensions.cs | 2 +-
.../HttpRequestMessageExtensions.cs | 2 +-
.../HttpStatusCodeExtensions.cs | 2 +-
.../IContainerContentExtensions.cs | 2 +-
.../IDataSourceExtensions.cs | 2 +-
.../IEnumerableExtensions.cs | 2 +-
.../IEnumeratorExtensions.cs | 2 +-
.../IHttpResponseMessageExtensions.cs | 2 +-
tests/Tableau.Migration.Tests/IResultTests.cs | 38 +-
.../IServiceCollectionExtensions.cs | 2 +-
.../IServiceCollectionExtensionsTestBase.cs | 2 +-
.../ITagTypeComparer.cs | 2 +-
.../IViewReferenceTypeComparer.cs | 2 +-
.../IWorkbookConnectionComparer.cs | 2 +-
.../IWorkbookExtensions.cs | 2 +-
.../ImmutableCollectionSpecimenBuilder.cs | 2 +-
.../Tableau.Migration.Tests/JsonExtensions.cs | 2 +-
.../LoggerSpecimenBuilder.cs | 4 +-
.../Tableau.Migration.Tests/MockExtensions.cs | 2 +-
.../Tableau.Migration.Tests/MockHttpClient.cs | 2 +-
.../MockServiceProvider.cs | 2 +-
.../MockSharedResourcesLocalizer.cs | 2 +-
.../NullEmptyWhiteSpaceDataAttribute.cs | 2 +-
.../NullableGuidParseDataAttribute.cs | 2 +-
.../ObjectExtensions.cs | 2 +-
.../PageInfoSpecimenBuilder.cs | 2 +-
.../Reflection/ObjectReflectionWrapper.cs | 2 +-
.../Reflection/SeekableCryptoStreamWrapper.cs | 2 +-
.../Reflection/TypeReflectionWrapper.cs | 2 +-
.../ReflectionExtensions.cs | 2 +-
.../RestExceptionExtensions.cs | 2 +-
.../ResultExtensions.cs | 2 +-
.../SimulatedConnectionComparer.cs | 2 +-
.../DataPreparation/CommonDataPreparation.cs | 2 +-
.../CustomViewsDataPreparation.cs | 2 +-
.../DataSourcesDataPreparation.cs | 2 +-
.../ExtractRefreshTasksDataPreparation.cs | 2 +-
.../FavoritesDataPreparation.cs | 2 +-
.../GroupSetsDataPreparation.cs | 2 +-
.../DataPreparation/GroupsDataPreparation.cs | 2 +-
.../ProjectsDataPreparation.cs | 2 +-
.../SchedulesDataPreparation.cs | 2 +-
.../SubscriptionsDataPreparation.cs | 2 +-
.../DataPreparation/UsersDataPreparation.cs | 2 +-
.../WorkbooksDataPreparation.cs | 2 +-
.../MultiDestinationSimulationTestBase.cs | 7 +-
.../ServerToCloudSimulationTestBase.cs | 91 +-
.../ServerToServerSimulationTestBase.cs | 7 +-
.../Simulation/SimulationTestBase.cs | 3 +-
.../SingleServerSimulationTestBase.cs | 5 +-
.../Simulation/TableauDataExtensions.cs | 16 +-
.../Simulation/Tests/Api/ApiClientTestBase.cs | 2 +-
.../Simulation/Tests/Api/ApiClientTests.cs | 2 +-
.../Tests/Api/CustomViewsApiClientTests.cs | 16 +-
.../Tests/Api/DataSourcesApiClientTests.cs | 65 +-
.../Tests/Api/FavoritesApiClientTests.cs | 2 +-
.../Tests/Api/GroupSetsApiClientTests.cs | 2 +-
.../Tests/Api/GroupsApiClientTests.cs | 38 +-
.../Tests/Api/JobsApiClientTests.cs | 2 +-
.../PermissionsContentApiClientTestBase.cs | 46 +-
.../Tests/Api/ProjectsApiClientTests.cs | 23 +-
.../Tests/Api/SchedulesApiClientTests.cs | 2 +-
.../Tests/Api/SitesApiClientTests.cs | 2 +-
.../Tests/Api/SubscriptionsApiClientTests.cs | 23 +-
.../Tests/Api/TasksApiClientTests.cs | 2 +-
.../Tests/Api/UsersApiClientTests.cs | 26 +-
.../Tests/Api/ViewsApiClientTests.cs | 161 ++
.../Tests/Api/WorkbooksApiClientTests.cs | 158 +-
.../Tests/CustomViewsMigrationTests.cs | 2 +-
.../Tests/DataSourceMigrationTests.cs | 2 +-
.../Simulation/Tests/ErrorHandlingTests.cs | 2 +-
.../Tests/ExtractRefreshTaskMigrationTests.cs | 2 +-
.../Tests/FavoritesMigrationTests.cs | 2 +-
.../Simulation/Tests/GroupMigrationTests.cs | 2 +-
.../Tests/GroupSetMigrationTests.cs | 2 +-
.../Simulation/Tests/HookTests.cs | 4 +-
.../Tests/IncrementalMigrationTests.cs | 2 +-
.../Simulation/Tests/MigratorTests.cs | 5 +-
.../Simulation/Tests/ProjectMigrationTests.cs | 2 +-
.../Simulation/Tests/SimulatorFactoryTests.cs | 2 +-
.../Tests/SubscriptionMigrationTests.cs | 2 +-
.../Simulation/Tests/UserMigrationTests.cs | 2 +-
.../Tests/WorkbookMigrationTests.cs | 14 +-
.../Tableau.Migration.Tests/StreamFactory.cs | 2 +-
.../StreamFactoryOptions.cs | 2 +-
.../StringEnumDataAttribute.cs | 2 +-
.../StringEnumGenerator.cs | 2 +-
.../Tableau.Migration.Tests.csproj | 14 +-
.../Tableau.Migration.Tests/TagExtensions.cs | 2 +-
.../Tableau.Migration.Tests/TestConfigFile.cs | 2 +-
.../Tableau.Migration.Tests/TestConstants.cs | 2 +-
.../TestContentType.cs | 2 +-
.../TestFileContentType.cs | 2 +-
.../TestHttpStreamProcessor.cs | 2 +-
tests/Tableau.Migration.Tests/TestLogger.cs | 2 +-
.../TestLoggerFactory.cs | 2 +-
.../TestLoggerMessage.cs | 2 +-
.../TestPagedTableauServerResponse.cs | 2 +-
.../TestPlanOptions.cs | 2 +-
.../TestPublishType.cs | 2 +-
.../TestSharedResourcesLocalizer.cs | 2 +-
.../TestTableauServerResponse.cs | 2 +-
.../TypeExtensionTests.cs | 2 +-
.../Unit/Api/ApiClientTestBase.cs | 2 +-
.../Unit/Api/ApiClientTestDependencies.cs | 21 +-
.../Unit/Api/ApiClientTests.cs | 2 +-
.../Api/ApiFilteredPageAccessorTestBase.cs | 92 +
.../Unit/Api/ApiPageAccessorTestBase.cs | 7 +-
.../Unit/Api/ApiTestBase.cs | 4 +-
...henticationConfigurationsApiClientTests.cs | 2 +-
.../Api/AuthenticationTokenProviderTests.cs | 2 +-
.../Unit/Api/CustomViewsApiClientTests.cs | 23 +-
.../Unit/Api/DataSourcesApiClientTests.cs | 34 +-
...mbeddedCredentialsApiClientFactoryTests.cs | 2 +-
.../EmbeddedCredentialsApiClientTests.cs | 2 +-
.../Unit/Api/FavoritesApiClientTests.cs | 3 +-
.../Unit/Api/FavoritesApiListPagerTests.cs | 3 +-
.../Api/FilteredPagedListApiClientTestBase.cs | 69 +
.../Unit/Api/FlowsApiClientTests.cs | 6 +-
.../Unit/Api/GroupSetsApiClientTests.cs | 6 +-
.../Unit/Api/GroupsApiClientTests.cs | 44 +-
.../Unit/Api/IApiClientTestDependencies.cs | 4 +-
.../Api/IContentCacheFactoryExtensions.cs | 2 +-
.../Api/IContentFileStoreExtensionsTests.cs | 2 +-
...ntReferenceFinderFactoryExtensionsTests.cs | 6 +-
.../Api/IHttpRequestBuilderExtensionsTests.cs | 2 +-
.../IHttpResponseMessageExtensionsTests.cs | 2 +-
.../Api/IServiceCollectionExtensionsTests.cs | 31 +-
.../Unit/Api/JobsApiClientTests.cs | 2 +-
.../Unit/Api/Labels/LabelsApiClientTests.cs | 2 +-
.../Unit/Api/MockExtensions.cs | 2 +-
.../Api/Models/ApplyKeychainOptionsTests.cs | 2 +-
.../Cloud/CreateSubscriptionOptionsTests.cs | 2 +-
.../Api/Models/CreateProjectOptionsTests.cs | 2 +-
.../Api/Models/DestinationSiteInfoTests.cs | 2 +-
.../Api/Models/FailedJobExceptionTests.cs | 2 +-
.../Unit/Api/Models/FileDownloadTests.cs | 2 +-
.../Unit/Api/Models/IUserExtensionsTests.cs | 2 +-
.../Unit/Api/Models/ImportJobTests.cs | 2 +-
.../Api/Models/KeychainUserMappingTests.cs | 2 +-
.../Models/PagedTableauServerResponseTests.cs | 2 +-
.../Models/PublishCustomViewOptionsTests.cs | 2 +-
.../Models/PublishDataSourceOptionsTests.cs | 2 +-
.../Api/Models/PublishFlowOptionsTests.cs | 2 +-
.../Api/Models/PublishWorkbookOptionsTests.cs | 2 +-
.../Unit/Api/Models/SignInRequestTests.cs | 2 +-
.../Unit/Api/Models/SignInResultTests.cs | 2 +-
.../Api/Models/TimeoutJobExceptionTests.cs | 2 +-
.../Api/Models/UpdateProjectResultTests.cs | 2 +-
.../Unit/Api/NameSearchApiClientTestBase.cs | 57 +
.../Unit/Api/PagedListApiClientTestBase.cs | 5 +-
.../Api/Paging/ApiFilteredListPagerTests.cs | 65 +
.../Api/{ => Paging}/ApiListPagerTests.cs | 10 +-
.../Paging/ProjectFilteredListPagerTests.cs | 93 +
.../DefaultPermissionsApiClientTests.cs | 2 +-
.../PermissionsApiClientFactoryTests.cs | 5 +-
.../Permissions/PermissionsApiClientTests.cs | 31 +-
.../PermissionsContentApiClientTestBase.cs | 2 +-
.../Unit/Api/ProjectsApiClientTests.cs | 60 +-
.../Publishing/CustomViewPublisherTests.cs | 2 +-
.../Publishing/DataSourcePublisherTests.cs | 2 +-
.../Api/Publishing/FilePublisherBaseTests.cs | 2 +-
.../Api/Publishing/FilePublisherTestBase.cs | 2 +-
.../Unit/Api/Publishing/FlowPublisherTests.cs | 2 +-
.../Api/Publishing/WorkbookPublisherTests.cs | 2 +-
.../Rest/ContentItemUriBuilderBaseTests.cs | 2 +-
.../Api/Rest/Models/AddUserResultTests.cs | 2 +-
.../Rest/Models/CreateProjectRequestTests.cs | 2 +-
.../Rest/Models/CreateProjectResponseTests.cs | 2 +-
.../Rest/Models/CustomViewResponseTests.cs | 2 +-
.../Rest/Models/CustomViewsResponseTests.cs | 2 +-
.../Unit/Api/Rest/Models/ErrorTests.cs | 2 +-
.../Models/IFavoriteTypeExtensionsTests.cs | 2 +-
.../Models/IProjectTypeExtensionsTests.cs | 2 +-
.../Unit/Api/Rest/Models/ITagTypeComparer.cs | 2 +-
.../Rest/Models/IUserTypeExtensionsTests.cs | 2 +-
.../Models/ImportUsersFromCsvRequestTests.cs | 2 +-
.../Api/Rest/Models/LabelContentTypesTests.cs | 2 +-
.../Unit/Api/Rest/Models/ModelTests.cs | 2 +-
.../Models/PagedTableauServerResponseTests.cs | 2 +-
.../Rest/Models/PublishFlowOptionsTests.cs | 2 +-
.../Requests/AddFavoriteRequestTests.cs | 2 +-
.../Models/Requests/AddTagsRequestTests.cs | 2 +-
.../Requests/AddUserToSiteRequestTests.cs | 2 +-
.../Requests/ApplyKeychainRequestTests.cs | 2 +-
.../Cloud/CreateSubscriptionRequestTests.cs | 2 +-
.../Cloud/UpdateSubscriptionRequestTests.cs | 2 +-
.../CommitDataSourcePublishRequestTests.cs | 2 +-
.../Requests/CommitFlowPublishRequestTests.cs | 2 +-
.../CommitWorkbookPublishRequestTests.cs | 2 +-
.../Requests/CreateGroupSetRequestTests.cs | 2 +-
.../Requests/RetrieveKeychainRequestTests.cs | 2 +-
...etrieveUserSavedCredentialsRequestTests.cs | 2 +-
.../Requests/UpdateConnectionRequestTests.cs | 2 +-
.../Requests/UpdateCustomViewRequestTests.cs | 2 +-
.../Requests/UpdateProjectRequestTests.cs | 2 +-
.../Models/Requests/UpdateSiteRequestTests.cs | 2 +-
.../Models/Requests/UpdateUserRequestTests.cs | 2 +-
.../UploadUserSavedCredentialsRequestTests.cs | 2 +-
.../Cloud/CreateSubscriptionResponseTests.cs | 2 +-
.../Cloud/ExtractRefreshTasksResponseTests.cs | 2 +-
.../Cloud/GetSubscriptionsResponseTests.cs | 2 +-
.../Cloud/UpdateSubscriptionResponseTests.cs | 2 +-
...ustomViewAsUsersDefaultViewResponseTest.cs | 2 +-
.../Responses/DataSourceResponseTests.cs | 129 ++
.../Responses/DataSourcesResponseTests.cs | 154 ++
.../Models/Responses/GroupSetResponseTests.cs | 2 +-
.../Responses/GroupSetsResponseTests.cs | 2 +-
.../RetrieveKeychainResponseTests.cs | 2 +-
.../ExtractRefreshTasksResponseTests.cs | 2 +-
.../Server/GetSubscriptionsResponseTests.cs | 2 +-
...cheduleExtractRefreshTasksResponseTests.cs | 2 +-
.../SiteAuthConfigurationResponseTests.cs | 2 +-
.../Models/RestProjectBuilderPagerTests.cs | 2 +-
.../Rest/Models/RestProjectBuilderTests.cs | 2 +-
.../Models/RestProjectResponsePagerTests.cs | 2 +-
...trieveUserSavedCredentialsResponseTests.cs | 2 +-
.../Rest/Models/ServerInfoResponseTests.cs | 2 +-
.../Api/Rest/Models/SignInRequestTests.cs | 2 +-
.../Api/Rest/Models/SignInResponseTests.cs | 2 +-
.../Unit/Api/Rest/Models/SiteResponseTests.cs | 2 +-
.../Api/Rest/Models/SiteRoleMappingTests.cs | 2 +-
.../Rest/Models/TableauServerResponseTests.cs | 2 +-
.../Types/GranteeCapabilityTypeTests.cs | 122 ++
.../Models/UpdateCustomViewResponseTests.cs | 2 +-
.../Api/Rest/Models/UpdateUserResultTests.cs | 2 +-
...ithCustomViewAsDefaultViewResponseTests.cs | 2 +-
.../Api/Rest/Models/WorkbookResponseTests.cs | 2 +-
.../Rest/Models/WorkbookViewsResponseTests.cs | 138 ++
.../Api/Rest/Models/WorkbooksResponseTests.cs | 2 +-
.../Api/Rest/PermissionsUriBuilderTests.cs | 2 +-
.../Unit/Api/Rest/RestExceptionTests.cs | 2 +-
.../Unit/Api/Rest/RestUrlKeywordsTests.cs | 2 +-
.../Unit/Api/Rest/RestUrlPrefixesTests.cs | 2 +-
.../Unit/Api/Rest/TagsUriBuilderTests.cs | 2 +-
.../Unit/Api/SchedulesApiClientTests.cs | 2 +-
.../Unit/Api/ScopedApiClientFactoryTests.cs | 9 +-
.../ApiContentReferenceFinderFactoryTests.cs | 2 +-
.../ApiContentReferenceStoreTestBase.cs | 90 +
.../Search/ApiContentReferenceStoreTests.cs | 146 ++
...heTests.cs => BulkApiContentCacheTests.cs} | 34 +-
.../BulkApiContentReferenceCacheTests.cs | 21 +-
.../Unit/Api/SerializationTestBase.cs | 2 +-
.../Unit/Api/ServerSessionProviderTests.cs | 2 +-
.../Rest/Net/Requests/RestUrlPatternsTests.cs | 2 +-
.../Rest/Net/Requests/UriExtensionsTests.cs | 2 +-
.../Net/Responses/ResponseBuilderTestBase.cs | 2 +-
.../RestGetByIdResponseBuilderTests.cs | 2 +-
.../RestPagedListResponseBuilderTests.cs | 2 +-
...stPermissionsCreateResponseBuilderTests.cs | 7 +-
.../RestPostEntityResponseBuilderTests.cs | 2 +-
.../TableauApiSimulatorFactoryTests.cs | 2 +-
.../Unit/Api/SiteApiTestBase.cs | 2 +-
.../Unit/Api/SitesApiClientTests.cs | 2 +-
.../Unit/Api/SubscriptionsApiClientTests.cs | 54 +-
.../Api/TableauServerVersionProviderTests.cs | 2 +-
...TableauSiteConnectionConfigurationTests.cs | 3 +-
.../Api/Tags/TagsApiClientFactoryTests.cs | 2 +-
.../Unit/Api/Tags/TagsApiClientTests.cs | 2 +-
.../Unit/Api/TasksApiClientTests.cs | 2 +-
.../Unit/Api/UsersApiClientTests.cs | 34 +-
.../Unit/Api/ViewsApiClientFactoryTests.cs | 2 +-
...piClientTest.cs => ViewsApiClientTests.cs} | 81 +-
.../Unit/Api/WorkbookViewTests.cs | 92 +
.../Unit/Api/WorkbooksApiClientTests.cs | 140 +-
.../Unit/AsyncDisposableResultTests.cs | 2 +-
.../Unit/AutoFixtureExtensions.cs | 2 +-
.../ConcurrentDictionaryExtensionsTests.cs | 2 +-
.../Unit/Config/ConfigReaderTests.cs | 2 +-
.../Unit/Config/ConfigurationTestContext.cs | 2 +-
.../Unit/Config/ConfigurationTests.cs | 2 +-
...faultPermissionsContentTypeOptionsTests.cs | 2 +-
.../Unit/Config/FileOptionsTests.cs | 3 +-
.../Unit/Config/MigrationSdkOptionsTests.cs | 2 +-
.../Unit/Config/PreflightOptionsTests.cs | 2 +-
.../UniqueContentTypesValidatorTests.cs | 2 +-
.../AuthenticationConfigurationTests.cs | 2 +-
.../Unit/Content/ContentBaseTests.cs | 2 +-
.../Content/ContentLocationComparerTests.cs | 2 +-
.../Unit/Content/ContentReferenceStubTests.cs | 2 +-
.../Unit/Content/CustomViewTests.cs | 2 +-
.../Unit/Content/DataSourceDetailsTests.cs | 2 +-
.../Unit/Content/DataSourceTests.cs | 3 +-
.../EmbeddedCredentialKeychainResultTests.cs | 2 +-
.../FavoriteContentTypeExtensionsTests.cs | 2 +-
.../Unit/Content/FavoriteTests.cs | 2 +-
.../Files/Aes256EncryptionFactoryTests.cs | 2 +-
.../Content/Files/ContentFileHandleTests.cs | 2 +-
.../Content/Files/ContentFileStoreTestBase.cs | 2 +-
.../Content/Files/ContentFileStreamTests.cs | 2 +-
.../Files/ContentTypeDirectoryNamesTests.cs | 2 +-
.../Files/ContentTypeFilePathResolverTests.cs | 2 +-
.../Files/ContentTypeFilePrefixesTests.cs | 2 +-
.../DirectoryContentFileStoreTestBase.cs | 2 +-
.../Files/DirectoryContentFileStoreTests.cs | 2 +-
.../Content/Files/EncryptedFileHandleTests.cs | 2 +-
.../Content/Files/EncryptedFileStoreTests.cs | 8 +-
.../Content/Files/EncryptedFileStreamTests.cs | 2 +-
.../Content/Files/IContentFileStoreTests.cs | 2 +-
.../Content/Files/MemoryContentFileStore.cs | 2 +-
.../Unit/Content/Files/MockXmlFileHandle.cs | 10 +-
.../Files/SeekableCryptoStreamTests.cs | 2 +-
.../Content/Files/TableauFileEditorTests.cs | 2 +-
.../Files/TableauFileXmlStreamTests.cs | 2 +-
...TemporaryDirectoryContentFileStoreTests.cs | 2 +-
.../Files/WritableMemoryContentFileStream.cs | 2 +-
.../Files/Xml/XContainerExtensionsTests.cs | 2 +-
.../Files/Xml/XElementExtensionsTests.cs | 2 +-
.../Files/Xml/XFeatureFlagNameTests.cs | 2 +-
.../Content/Files/Xml/XNameExtensionsTests.cs | 2 +-
.../Unit/Content/FlowTests.cs | 2 +-
.../Unit/Content/GroupSetTests.cs | 2 +-
.../Unit/Content/GroupTests.cs | 2 +-
.../Unit/Content/IConnectionsContentTests.cs | 2 +-
.../Unit/Content/IUserTests.cs | 2 +-
.../MappableContainerContentBaseTests.cs | 2 +-
.../Unit/Content/MappableContentBaseTests.cs | 2 +-
.../Permissions/GranteeCapabilityTests.cs | 12 +-
...sions.cs => GranteeTypeExtensionsTests.cs} | 29 +-
.../Permissions/IGranteeCapabilityComparer.cs | 6 +-
.../Permissions/IPermissionsComparer.cs | 5 +-
.../Unit/Content/ProjectTests.cs | 2 +-
.../Content/PublishableCustomViewTests.cs | 2 +-
.../Unit/Content/PublishableFlowTests.cs | 2 +-
.../Unit/Content/PublishableGroupSetTests.cs | 2 +-
.../Cloud/CloudExtractRefreshTaskTests.cs | 2 +-
.../Cloud/CloudScheduleValidatorTests.cs | 6 +-
.../Schedules/ExtractRefreshTaskTestBase.cs | 2 +-
.../Schedules/ExtractRefreshTestCaches.cs | 2 +-
.../Schedules/IFrequencyExtensionsTests.cs | 2 +-
.../Schedules/IntervalComparerTests.cs | 2 +-
.../Content/Schedules/ScheduleTestBase.cs | 2 +-
.../Server/ScheduleExtractRefreshTaskTests.cs | 2 +-
.../ScheduleExtractRefreshTasksTests.cs | 2 +-
.../Server/ServerExtractRefreshTaskTests.cs | 2 +-
.../Server/ServerScheduleValidatorTests.cs | 6 +-
.../Content/Schedules/VolatileCacheTests.cs | 2 +-
...kContentReferenceCacheLoadStrategyTests.cs | 62 +
.../CachedContentReferenceFinderTests.cs | 2 +-
.../Search/ContentReferenceCacheBaseTests.cs | 404 +++--
.../IContentReferenceFinderFactoryTests.cs | 2 +-
...yContentReferenceCacheLoadStrategyTests.cs | 76 +
.../Content/ServerSessionSettingsTests.cs | 2 +-
.../Unit/Content/ServerSessionTests.cs | 2 +-
.../Unit/Content/SiteSettingUpdateTests.cs | 2 +-
.../Unit/Content/SiteTests.cs | 2 +-
.../Unit/Content/TagLabelComparerTests.cs | 2 +-
.../Unit/Content/TagTests.cs | 2 +-
.../Content/UserAuthenticationTypeTests.cs | 2 +-
.../Unit/Content/UserTests.cs | 2 +-
.../Unit/Content/UsernameContentBaseTests.cs | 2 +-
.../Unit/Content/WorkbookDetailsTests.cs | 2 +-
.../Unit/ContentLocationTests.cs | 158 +-
.../Unit/ContentUrlSearchApiClientTestBase.cs | 58 +
.../Unit/CsvExtensionsTests.cs | 2 +-
.../Unit/DateTimeExtensionsTests.cs | 2 +-
.../Actions/MigrateContentActionTests.cs | 6 +-
.../Actions/MigrationActionResultTests.cs | 2 +-
.../Engine/Actions/PreflightActionTests.cs | 2 +-
.../ConfigurableMigrationCacheBaseTests.cs | 2 +-
.../DirectContentItemConverterTests.cs | 2 +-
...ToCloudExtractRefreshTaskConverterTests.cs | 2 +-
.../ServerToCloudScheduleConverterTests.cs | 10 +-
...ServerToCloudSubscriptionConverterTests.cs | 2 +-
.../ApiContentReferenceCacheBaseTest.cs | 39 +
...iAuthenticationConfigurationsCacheTests.cs | 6 +-
...ReferenceCacheLoadStrategyProviderTests.cs | 48 +
.../DestinationCacheTest.cs} | 20 +-
.../DestinationCacheTests.cs} | 34 +-
.../DestinationProjectCacheTests.cs} | 12 +-
...ReferenceCacheLoadStrategyProviderTests.cs | 48 +
.../Endpoints/Caching/SourceCacheTests.cs | 264 +++
.../TableauApiEndpointViewCacheTests.cs | 2 +-
...bleauApiEndpointWorkbookViewsCacheTests.cs | 10 +-
.../UserSavedCredentialsCacheTests.cs | 5 +-
.../FavoritesContentClientTests.cs | 8 +-
.../ContentClients/ViewsContentClientTests.cs | 2 +-
.../WorkbooksContentClientTests.cs | 2 +-
.../EmptyMigrationContentLoaderTests.cs | 48 +
.../Endpoints/IMigrationEndpointTests.cs | 2 +-
.../MigrationEndpointFactoryTests.cs | 6 +-
.../MigrationPlanEndpointBuilderTests.cs | 41 +
.../Engine/Endpoints/Search/BulkCacheTest.cs | 68 -
...tionContentReferenceFinderFactoryTests.cs} | 11 +-
.../DestinationViewReferenceFinderTests.cs | 2 +-
...ationContentReferenceFinderFactoryTests.cs | 2 +-
...tDestinationContentReferenceFinderTests.cs | 128 +-
...nifestSourceContentReferenceFinderTests.cs | 2 +-
...urceContentReferenceFinderFactoryTests.cs} | 11 +-
...urceEndpointMigrationContentLoaderTests.cs | 41 +
.../TableauApiDestinationEndpointTests.cs | 4 +-
.../Endpoints/TableauApiEndpointBaseTests.cs | 2 +-
.../TableauApiEndpointConfigurationTests.cs | 7 +-
.../Endpoints/TableauApiEndpointTestBase.cs | 2 +-
.../TableauApiSourceEndpointTests.cs | 4 +-
.../Engine/Hooks/CallbackHookWrapperTests.cs | 2 +-
.../Hooks/ContentTypeHookBuilderBaseTests.cs | 2 +-
.../Filters/AsyncContentFilterBaseTests.cs | 9 +-
.../Hooks/Filters/ContentFilterBaseTests.cs | 9 +-
.../Filters/ContentFilterBuilderTests.cs | 20 +-
.../Hooks/Filters/ContentFilterRunnerTests.cs | 9 +-
.../ContentLocationInPathCriterionTests.cs | 15 +-
.../Filters/Default/FavoriteFilterTests.cs | 55 +-
.../GroupAllUsersFilterOptionsTests.cs | 2 +-
.../Default/GroupAllUsersFilterTests.cs | 9 +-
.../Default/LargeContentFilterTests.cs | 176 ++
.../Default/PreviouslyMigratedFilterTests.cs | 2 +-
.../ProjectSystemOwnershipFilterTests.cs | 8 +-
.../Default/ServerSubscriptionFilterTests.cs | 205 +++
.../Filters/Default/SkipAllFilterTests.cs} | 28 +-
.../UserSiteRoleSupportUserFilterTests.cs | 10 +-
...beddedCredentialsCapabilityManagerTests.cs | 5 +-
...dpointSettingCapabilityManagerBaseTests.cs | 2 +-
.../GroupSetsCapabilityManagerTests.cs | 2 +-
.../SubscriptionsCapabilityManagerTests.cs | 9 +-
.../InitializeCapabilitiesHookTests.cs | 2 +-
.../InitializeMigrationHookResultTests.cs | 2 +-
.../Hooks/Mappings/ContentMappingBaseTests.cs | 7 +-
.../Mappings/ContentMappingBuilderTests.cs | 20 +-
.../Mappings/ContentMappingContextTests.cs | 2 +-
.../Mappings/ContentMappingRunnerTests.cs | 8 +-
...uthenticationTypeDomainMappingBaseTests.cs | 2 +-
.../AuthenticationTypeDomainMappingTests.cs | 15 +-
...ackAuthenticationTypeDomainMappingTests.cs | 16 +-
.../Mappings/Default/FavoriteMappingTests.cs | 2 +-
.../TableauCloudUsernameMappingTests.cs | 16 +-
.../Hooks/MigrationHookBuilderBaseTests.cs | 2 +-
.../Engine/Hooks/MigrationHookBuilderTests.cs | 2 +-
.../MigrationHookFactoryCollectionTests.cs | 2 +-
.../Engine/Hooks/MigrationHookFactoryTests.cs | 2 +-
.../Engine/Hooks/MigrationHookRunnerTests.cs | 2 +-
.../BulkPostPublishContextTests.cs | 2 +-
.../ContentItemPostPublishContextTests.cs | 2 +-
...ildItemsPermissionsPostPublishHookTests.cs | 4 +-
.../CleanupViewsPostPublishHookTests.cs | 338 ++++
...ddedCredentialsItemPostPublishHookTests.cs | 9 +-
.../Default/OwnerItemPostPublishHookTests.cs | 2 +-
.../PermissionPostPublishHookBaseTests.cs | 4 +-
.../PermissionsItemPostPublishHookTests.cs | 4 +-
.../PopulateViewCachePostPublishHookTests.cs | 2 +-
.../Default/ProjectPostPublishHookTests.cs | 4 +-
.../Default/TagItemPostPublishHookTests.cs | 2 +-
.../ContentTransformerBuilderTests.cs | 19 +-
.../ContentTransformerRunnerTests.cs | 26 +-
...ewDefaultUserReferencesTransformerTests.cs | 59 +-
.../Default/EncryptExtractTransformerTests.cs | 9 +-
.../Default/FavoriteTransformerTests.cs | 14 +-
.../Default/GroupSetGroupsTransformerTests.cs | 6 +-
.../Default/GroupUsersTransformerTests.cs | 41 +-
.../IContentReferenceExtensionsTests.cs | 62 +-
...renceExtractRefreshTaskTransformerTests.cs | 20 +-
.../Default/MappedUserTransformerTests.cs | 71 -
.../Default/OwnershipTransformerTests.cs | 14 +-
.../Default/PermissionsTransformerTests.cs | 85 +-
...leauServerConnectionUrlTransformerTests.cs | 13 +-
...CloudAuthenticationTypeTransformerTests.cs | 4 +-
...serTableauCloudSiteRoleTransformerTests.cs | 8 +-
.../WorkbookReferenceTransformerTests.cs | 17 +-
.../IXmlContentTransformerTests.cs | 2 +-
.../XmlContentTransformerBaseTests.cs | 2 +-
.../Unit/Engine/IMigrationExtensionsTests.cs | 2 +-
.../IServiceCollectionExtensionsTests.cs | 70 +-
.../Manifest/IMigrationManifestEditorTests.cs | 2 +-
.../Manifest/LoggingMigrationManifestTests.cs | 2 +-
...rationManifestContentTypePartitionTests.cs | 2 +-
.../MigrationManifestEntryCollectionTests.cs | 2 +-
.../Manifest/MigrationManifestEntryTests.cs | 2 +-
.../Manifest/MigrationManifestFactoryTests.cs | 2 +-
.../MigrationManifestSerializerTests.cs | 10 +-
.../Engine/Manifest/MigrationManifestTests.cs | 28 +-
...MigrationDirectoryContentFileStoreTests.cs | 2 +-
.../Unit/Engine/MigrationInputTests.cs | 2 +-
.../MigrationPlanBuilderFactoryTests.cs | 2 +-
.../Unit/Engine/MigrationPlanBuilderTests.cs | 129 +-
.../Unit/Engine/MigrationTests.cs | 52 +-
.../BulkPublishContentBatchMigratorTests.cs | 2 +-
.../Batch/ContentBatchMigrationResultTests.cs | 2 +-
.../Batch/ContentBatchMigratorBaseTests.cs | 2 +-
.../Batch/ContentBatchMigratorTestBase.cs | 2 +-
.../Batch/ContentMigrationBatchTests.cs | 2 +-
.../ItemPublishContentBatchMigratorTests.cs | 2 +-
...allelContentBatchMigratorBatchBaseTests.cs | 2 +-
...rallelContentBatchMigratorBatchTestBase.cs | 2 +-
.../ContentItemMigrationResultTests.cs | 2 +-
.../Engine/Migrators/ContentMigratorTests.cs | 17 +-
.../Unit/Engine/Migrators/MigratorTests.cs | 10 +-
.../MigrationPlanOptionsBuilderTests.cs | 2 +-
.../MigrationPlanOptionsCollectionTests.cs | 2 +-
.../MigrationPlanOptionsProviderTests.cs | 2 +-
.../CustomMigrationPipelineFactoryTests.cs | 2 +-
.../Pipelines/MigrationPipelineBaseTests.cs | 137 +-
...ationPipelineContentTypeExtensionsTests.cs | 2 +-
.../MigrationPipelineContentTypeTests.cs | 2 +-
.../MigrationPipelineFactoryTests.cs | 2 +-
.../Pipelines/MigrationPipelineRunnerTests.cs | 2 +-
.../Pipelines/MigrationPipelineTestBase.cs | 2 +-
.../ServerToCloudMigrationPipelineTests.cs | 2 +-
.../Unit/Engine/Pipelines/TestAction.cs | 4 +-
.../Unit/Engine/Pipelines/TestPipeline.cs | 2 +-
.../ContentItemPreparerBaseTests.cs | 2 +-
.../ContentItemPreparerTestBase.cs | 2 +-
.../EndpointContentItemPreparerTests.cs | 2 +-
.../SourceContentItemPreparerTests.cs | 2 +-
.../ServerToCloudMigrationPlanBuilderTests.cs | 80 +-
.../MigrationServiceBuilderFactoryTests.cs | 42 +
.../Services/MigrationServiceBuilderTests.cs | 203 +++
.../Engine/Services/MigrationServicesTests.cs | 38 +
.../Unit/ExceptionExtensionsTests.cs | 2 +-
.../Unit/FilePathTests.cs | 2 +-
.../Unit/GuardTests.cs | 2 +-
.../Unit/HttpClientExtensions.cs | 2 +-
...ContentReferenceFinderFactoryExtensions.cs | 2 +-
.../Unit/IEnumerableExtensionsTests.cs | 2 +-
.../Unit/IHttpClientExtensions.cs | 2 +-
.../Unit/ILoggerTests.cs | 2 +-
.../Unit/IResultTests.cs | 2 +-
.../Unit/IServiceCollectionExtensionsTests.cs | 2 +-
.../Unit/InheritedTypeComparerTests.cs | 2 +-
...ContentBatchMigrationCompletedHookTests.cs | 2 +-
.../ISyncMigrationActionCompletedHookTests.cs | 2 +-
.../Interop/Hooks/ISyncMigrationHookTests.cs | 2 +-
.../IServiceCollectionExtensionsTests.cs | 2 +-
.../TestSerializableContentLocation.cs | 2 +-
.../TestSerializableContentReference.cs | 2 +-
.../TestSerializableManifestEntry.cs | 2 +-
.../SerializedExceptionJsonConverterTests.cs | 2 +-
...LoggingServiceCollectionExtensionsTests.cs | 2 +-
.../Unit/MigrationCapabilitiesTests.cs | 2 +-
.../Unit/MigrationSdkTests.cs | 2 +-
.../Unit/MockHttpResponseMessage.cs | 2 +-
.../Unit/MockHttpResponseMessageExtensions.cs | 2 +-
.../Unit/MockIHttpClientExtensions.cs | 2 +-
.../Unit/NameOfTests.cs | 2 +-
.../Unit/Net/DefaultHttpClientTests.cs | 2 +-
.../AuthenticationHttpHandlerTests.cs | 2 +-
.../Net/Handlers/LoggingHttpHandlerTests.cs | 2 +-
.../Net/Handlers/MockDelegatingHandler.cs | 2 +-
.../UserAgentHeaderHttpHandlerTests.cs | 2 +-
.../Unit/Net/HttpContentExtensionsTests.cs | 2 +-
.../Net/HttpContentRequestBuilderTests.cs | 2 +-
.../Unit/Net/HttpContentSerializerTests.cs | 2 +-
.../Unit/Net/HttpDeleteRequestBuilderTests.cs | 2 +-
.../Unit/Net/HttpGetRequestBuilderTests.cs | 2 +-
.../Unit/Net/HttpPatchRequestBuilderTests.cs | 2 +-
.../Unit/Net/HttpPostRequestBuilderTests.cs | 2 +-
.../Unit/Net/HttpPutRequestBuilderTests.cs | 2 +-
.../Net/HttpRequestBuilderFactoryTests.cs | 2 +-
.../Unit/Net/HttpRequestBuilderTests.cs | 2 +-
.../Unit/Net/HttpStreamProcessorTests.cs | 2 +-
.../Net/IServiceCollectionExtensionsTests.cs | 10 +-
.../HttpActivityDetailsBuilderTests.cs | 2 +-
.../Net/Logging/HttpActivityLoggerTests.cs | 62 +-
.../Net/Logging/HttpContentRedactorTests.cs | 2 +-
.../MediaTypeHeaderValueExtensionsTests.cs | 2 +-
.../Unit/Net/QueryStringBuilderTests.cs | 2 +-
.../Unit/Net/RequestBuilderTests.cs | 2 +-
.../ClientThrottleStrategyBuilderTests.cs | 2 +-
.../MaxConcurrentStrategyBuilderTests.cs | 2 +-
.../RequestTimeoutStrategyBuilderTests.cs | 2 +-
.../Resilience/ResilienceContextExtensions.cs | 2 +-
.../Resilience/ResilienceStrategyTestBase.cs | 2 +-
.../Resilience/RetryStrategyBuilderTests.cs | 2 +-
.../ServerThrottleStrategyBuilderTests.cs | 168 +-
.../Unit/Net/Rest/Fields/FieldBuilderTests.cs | 2 +-
.../Unit/Net/Rest/Fields/FieldTests.cs | 2 +-
.../Net/Rest/Filtering/FilterBuilderTests.cs | 2 +-
.../Net/Rest/Filtering/FilterOperatorTests.cs | 2 +-
.../Unit/Net/Rest/Filtering/FilterTests.cs | 2 +-
.../Unit/Net/Rest/GuidExtensionsTests.cs | 2 +-
.../Rest/HttpRequestMessageExtensionsTests.cs | 2 +-
.../Unit/Net/Rest/IRestRequestBuilderTests.cs | 2 +-
.../Unit/Net/Rest/Paging/PageBuilderTests.cs | 2 +-
.../Unit/Net/Rest/Paging/PageTests.cs | 2 +-
.../RestRequestBuilderFactoryInputTests.cs | 44 +
.../Rest/RestRequestBuilderFactoryTests.cs | 26 +-
.../Unit/Net/Rest/RestRequestBuilderTests.cs | 2 +-
.../Unit/Net/Rest/Sorting/SortBuilderTests.cs | 2 +-
.../Unit/Net/Rest/Sorting/SortTests.cs | 2 +-
.../Unit/Net/TableauSerializerTests.cs | 2 +-
.../Unit/Net/UriExtensionsTests.cs | 2 +-
.../Unit/Net/UserAgentProviderTests.cs | 2 +-
.../Unit/ObjectExtensionsTests.cs | 2 +-
.../Unit/OptionsHookTestBase.cs | 2 +-
.../BreadthFirstPathHierarchyPagerTests.cs | 2 +-
.../Unit/Paging/CallbackPagerTests.cs | 2 +-
.../Unit/Paging/IPagedResultTests.cs | 48 +
.../Unit/Paging/IPagerTests.cs | 2 +-
.../Unit/Paging/IndexedPagerBaseTests.cs | 2 +-
.../Unit/Paging/MemoryPagerTests.cs | 2 +-
.../Unit/Paging/PagedResultTests.cs | 2 +-
.../Resources/AllUsersTranslationsTests.cs | 2 +-
.../ISharedResourcesLocalizerTests.cs | 2 +-
.../Unit/ResultBuilderTests.cs | 2 +-
.../Unit/ResultTests.cs | 2 +-
.../Unit/StreamExtensionsTests.cs | 2 +-
.../Unit/StringEnumTests.cs | 2 +-
.../Unit/TaskExtensionsTests.cs | 2 +-
.../Unit/TypeExtensionsTests.cs | 2 +-
.../Unit/ValidationExtensionsTests.cs | 2 +-
.../ValuesAttribute.cs | 2 +-
.../packages.lock.json | 876 +++++-----
.../GlobalSuppressions.cs | 2 +-
.../Tableau.Migration.CleanServer/Program.cs | 2 +-
.../Tableau.Migration.CleanSite.csproj | 6 +-
.../packages.lock.json | 395 +++--
.../ExceptionComparer.cs | 2 +-
.../HtmlTemplate.cs | 2 +-
.../ManifestAnalyzer.cs | 2 +-
.../ManifestAnalyzerOptions.cs | 2 +-
.../Program.cs | 2 +-
.../Tableau.Migration.ManifestAnalyzer.csproj | 2 +-
.../packages.lock.json | 526 +++---
.../Program.cs | 2 +-
.../Program.cs | 2 +-
.../packages.lock.json | 905 +++++-----
.../App.axaml.cs | 2 +-
.../Converters/InverseBooleanConverter.cs | 2 +-
.../DesignExceptionListDialogViewModel.cs | 2 +-
.../ViewModels/DesignMainViewModel.cs | 2 +-
.../ViewModels/DesignManifestViewModel.cs | 2 +-
.../ExceptionListDialogViewModel.cs | 2 +-
.../IShowExceptionListDialogViewModel.cs | 2 +-
.../ViewModels/MainViewModel.cs | 2 +-
.../ViewModels/ManifestEntryPageViewModel.cs | 2 +-
.../ViewModels/ManifestEntryViewModel.cs | 2 +-
.../ViewModels/ManifestPartitionViewModel.cs | 2 +-
.../ViewModels/ManifestViewModel.cs | 2 +-
.../ViewModels/ViewModelBase.cs | 2 +-
.../Views/ExceptionListDialog.axaml.cs | 2 +-
.../Views/MainView.axaml.cs | 2 +-
.../Views/MainWindow.axaml.cs | 2 +-
.../Views/ManifestView.axaml.cs | 2 +-
.../packages.lock.json | 797 ++++-----
2021 files changed, 21615 insertions(+), 8378 deletions(-)
create mode 100644 .github/.secrets.default
create mode 100644 .github/.vars.default
create mode 100644 examples/Csharp.ExampleApplication/Services/MigrationContentLoader/EmptyMigrationContentLoader.cs
create mode 100644 examples/Python.ExampleApplication/services/migration_content_loader/empty_migration_content_loader.py
create mode 100644 src/Documentation/articles/configuration/data_loading.md
rename src/Documentation/articles/{configuration.md => configuration/index.md} (92%)
create mode 100644 src/Documentation/articles/configuration/skip_content_type.md
create mode 100644 src/Documentation/articles/content-type-api-ver.md
rename src/Documentation/articles/{dependency_injection.md => dependency_injection/index.md} (77%)
create mode 100644 src/Documentation/articles/dependency_injection/migration_services.md
create mode 100644 src/Documentation/includes/content_types_api_mapping.html
create mode 100644 src/Documentation/scripts/table-sorter.js
create mode 100644 src/Documentation/templates/tableau/partials/scripts.tmpl.partial
create mode 100644 src/Python/src/tableau_migration/migration_engine_endpoints_caching.py
create mode 100644 src/Python/src/tableau_migration/migration_engine_services.py
create mode 100644 src/Python/src/tableau_migration/migration_interop.py
create mode 100644 src/Python/src/tableau_migration/migration_paging.py
create mode 100644 src/Python/tests/test_migration_engine_services.py
create mode 100644 src/Python/tests/test_migration_paging.py
create mode 100644 src/Tableau.Migration/Api/IContentUrlSearchApiClient.cs
create mode 100644 src/Tableau.Migration/Api/IFilteredPagedListApiClient.cs
create mode 100644 src/Tableau.Migration/Api/INameSearchApiClient.cs
create mode 100644 src/Tableau.Migration/Api/IWorkbookView.cs
create mode 100644 src/Tableau.Migration/Api/Paging/ApiFilteredListPager.cs
rename src/Tableau.Migration/Api/{ => Paging}/ApiListPager.cs (88%)
rename src/Tableau.Migration/Api/{ => Paging}/FavoritesApiListPager.cs (97%)
create mode 100644 src/Tableau.Migration/Api/Paging/IApiFilteredPageAccessor.cs
rename src/Tableau.Migration/Api/{ => Paging}/IApiPageAccessor.cs (95%)
create mode 100644 src/Tableau.Migration/Api/Paging/ProjectFilteredListPager.cs
create mode 100644 src/Tableau.Migration/Api/Rest/Models/IWorkbookViewType.cs
create mode 100644 src/Tableau.Migration/Api/Rest/Models/Responses/Cloud/ExtractRefreshTaskResponse.cs
create mode 100644 src/Tableau.Migration/Api/Rest/Models/Responses/Cloud/GetSubscriptionResponse.cs
create mode 100644 src/Tableau.Migration/Api/Rest/Models/Responses/ISubscriptionContentTypeExtensions.cs
create mode 100644 src/Tableau.Migration/Api/Rest/Models/Responses/Server/ExtractRefreshTaskResponse.cs
create mode 100644 src/Tableau.Migration/Api/Rest/Models/Responses/Server/GetSubscriptionResponse.cs
create mode 100644 src/Tableau.Migration/Api/Rest/Models/Responses/WorkbookViewsResponse.cs
create mode 100644 src/Tableau.Migration/Api/Search/ApiContentReferenceCacheBase.cs
create mode 100644 src/Tableau.Migration/Api/Search/ApiContentReferenceStore.cs
rename src/Tableau.Migration/Api/Search/{ApiContentCache.cs => BulkApiContentCache.cs} (71%)
create mode 100644 src/Tableau.Migration/Api/WorkbookView.cs
rename src/Tableau.Migration/{Engine/Hooks/Transformers/Default/IMappedUserTransformer.cs => Content/ISizeContent.cs} (69%)
create mode 100644 src/Tableau.Migration/Content/Search/BulkContentReferenceCacheLoadStrategy.cs
create mode 100644 src/Tableau.Migration/Content/Search/ContentReferenceCacheLoadAttempt.cs
create mode 100644 src/Tableau.Migration/Content/Search/ContentReferenceLoadResult.cs
create mode 100644 src/Tableau.Migration/Content/Search/IContentReferenceCacheLoadAttempt.cs
create mode 100644 src/Tableau.Migration/Content/Search/IContentReferenceCacheLoadStrategy.cs
create mode 100644 src/Tableau.Migration/Content/Search/IContentReferenceStore.cs
create mode 100644 src/Tableau.Migration/Content/Search/LazyContentReferenceCacheLoadStrategy.cs
create mode 100644 src/Tableau.Migration/Content/Search/MissingContentReferenceExtensions.cs
create mode 100644 src/Tableau.Migration/Content/SubscriptionContentType.cs
rename src/Tableau.Migration/Engine/Endpoints/{Search => Caching}/BulkApiAuthenticationConfigurationsCache.cs (96%)
create mode 100644 src/Tableau.Migration/Engine/Endpoints/Caching/BulkContentReferenceCacheLoadStrategyProvider.cs
create mode 100644 src/Tableau.Migration/Engine/Endpoints/Caching/DestinationCache.cs
rename src/Tableau.Migration/Engine/Endpoints/{Search/BulkDestinationProjectCache.cs => Caching/DestinationProjectCache.cs} (66%)
create mode 100644 src/Tableau.Migration/Engine/Endpoints/Caching/IContentReferenceCacheLoadStrategyProvider.cs
rename src/Tableau.Migration/Engine/Endpoints/{Search => Caching}/IDestinationAuthenticationConfigurationsCache.cs (94%)
rename src/Tableau.Migration/Engine/Endpoints/{Search => Caching}/ILockedProjectCache.cs (95%)
create mode 100644 src/Tableau.Migration/Engine/Endpoints/Caching/IManifestUpdateSourceContentReferenceCache.cs
rename src/Tableau.Migration/Engine/Endpoints/{Search => Caching}/IUserSavedCredentialsCache.cs (94%)
create mode 100644 src/Tableau.Migration/Engine/Endpoints/Caching/LazyContentReferenceCacheLoadStrategyProvider.cs
create mode 100644 src/Tableau.Migration/Engine/Endpoints/Caching/SourceCache.cs
rename src/Tableau.Migration/Engine/Endpoints/{Search => Caching}/UserSavedCredentialsCache.cs (93%)
create mode 100644 src/Tableau.Migration/Engine/Endpoints/EmptyMigrationContentLoader.cs
create mode 100644 src/Tableau.Migration/Engine/Endpoints/IMigrationContentLoader.cs
create mode 100644 src/Tableau.Migration/Engine/Endpoints/IMigrationPlanEndpointBuilder.cs
create mode 100644 src/Tableau.Migration/Engine/Endpoints/MigrationPlanEndpointBuilder.cs
delete mode 100644 src/Tableau.Migration/Engine/Endpoints/Search/BulkDestinationCache.cs
delete mode 100644 src/Tableau.Migration/Engine/Endpoints/Search/BulkSourceCache.cs
rename src/Tableau.Migration/Engine/Endpoints/Search/{ManifestDestinationContentReferenceFinderFactory.cs => DestinationContentReferenceFinderFactory.cs} (62%)
create mode 100644 src/Tableau.Migration/Engine/Endpoints/Search/IMappedContentReferenceFinder.cs
rename src/Tableau.Migration/Engine/Endpoints/Search/{ManifestSourceContentReferenceFinderFactory.cs => SourceContentReferenceFinderFactory.cs} (58%)
create mode 100644 src/Tableau.Migration/Engine/Endpoints/SourceEndpointMigrationContentLoader.cs
create mode 100644 src/Tableau.Migration/Engine/Hooks/Filters/Default/LargeContentFilter.cs
create mode 100644 src/Tableau.Migration/Engine/Hooks/Filters/Default/ServerSubscriptionFilter.cs
create mode 100644 src/Tableau.Migration/Engine/Hooks/Filters/Default/SkipAllFilter.cs
create mode 100644 src/Tableau.Migration/Engine/Hooks/PostPublish/Default/CleanupViewsPostPublishHook.cs
delete mode 100644 src/Tableau.Migration/Engine/Hooks/Transformers/Default/IContentReferenceExtensions.cs
delete mode 100644 src/Tableau.Migration/Engine/Hooks/Transformers/Default/MappedUserTransformer.cs
create mode 100644 src/Tableau.Migration/Engine/Hooks/Transformers/Default/PermissionGranteeGroup.cs
create mode 100644 src/Tableau.Migration/Engine/Hooks/Transformers/Default/PermissionGranteeGroupEqualityComparer.cs
create mode 100644 src/Tableau.Migration/Engine/Services/IMigrationServiceBuilder.cs
create mode 100644 src/Tableau.Migration/Engine/Services/IMigrationServiceBuilderFactory.cs
create mode 100644 src/Tableau.Migration/Engine/Services/IMigrationServiceFactoryCollection.cs
create mode 100644 src/Tableau.Migration/Engine/Services/MigrationServiceBuilder.cs
create mode 100644 src/Tableau.Migration/Engine/Services/MigrationServiceBuilderFactory.cs
create mode 100644 src/Tableau.Migration/Engine/Services/MigrationServiceFactory.cs
create mode 100644 src/Tableau.Migration/Engine/Services/MigrationServiceFactoryContext.cs
create mode 100644 src/Tableau.Migration/Engine/Services/MigrationServices.cs
create mode 100644 src/Tableau.Migration/Net/Rest/IRestRequestBuilderFactoryInput.cs
create mode 100644 src/Tableau.Migration/Net/Rest/IRestRequestBuilderFactoryInputInitializer.cs
create mode 100644 src/Tableau.Migration/Net/Rest/RestRequestBuilderFactoryInput.cs
create mode 100644 tests/Tableau.Migration.TestApplication.Tests/packages.lock.json
create mode 100644 tests/Tableau.Migration.Tests/Simulation/Tests/Api/ViewsApiClientTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/ApiFilteredPageAccessorTestBase.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/FilteredPagedListApiClientTestBase.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/NameSearchApiClientTestBase.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/Paging/ApiFilteredListPagerTests.cs
rename tests/Tableau.Migration.Tests/Unit/Api/{ => Paging}/ApiListPagerTests.cs (90%)
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/Paging/ProjectFilteredListPagerTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/Rest/Models/Responses/DataSourceResponseTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/Rest/Models/Responses/DataSourcesResponseTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/Rest/Models/Types/GranteeCapabilityTypeTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/Rest/Models/WorkbookViewsResponseTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/Search/ApiContentReferenceStoreTestBase.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/Search/ApiContentReferenceStoreTests.cs
rename tests/Tableau.Migration.Tests/Unit/Api/Search/{ApiContentCacheTests.cs => BulkApiContentCacheTests.cs} (76%)
rename tests/Tableau.Migration.Tests/Unit/Api/{ViewsApiClientTest.cs => ViewsApiClientTests.cs} (69%)
create mode 100644 tests/Tableau.Migration.Tests/Unit/Api/WorkbookViewTests.cs
rename tests/Tableau.Migration.Tests/Unit/Content/Permissions/{GranteeCapabilityTypeExtensions.cs => GranteeTypeExtensionsTests.cs} (53%)
create mode 100644 tests/Tableau.Migration.Tests/Unit/Content/Search/BulkContentReferenceCacheLoadStrategyTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Content/Search/LazyContentReferenceCacheLoadStrategyTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/ContentUrlSearchApiClientTestBase.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/Caching/ApiContentReferenceCacheBaseTest.cs
rename tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/{Search => Caching}/BulkApiAuthenticationConfigurationsCacheTests.cs (95%)
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/Caching/BulkContentReferenceCacheLoadStrategyProviderTests.cs
rename tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/{Search/BulkDestinationCacheTest.cs => Caching/DestinationCacheTest.cs} (78%)
rename tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/{Search/BulkDestinationCacheTests.cs => Caching/DestinationCacheTests.cs} (71%)
rename tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/{Search/BulkDestinationProjectCacheTests.cs => Caching/DestinationProjectCacheTests.cs} (91%)
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/Caching/LazyContentReferenceCacheLoadStrategyProviderTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/Caching/SourceCacheTests.cs
rename tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/{Search => Caching}/UserSavedCredentialsCacheTests.cs (94%)
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/EmptyMigrationContentLoaderTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/MigrationPlanEndpointBuilderTests.cs
delete mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/Search/BulkCacheTest.cs
rename tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/Search/{ManifestDestinationContentReferenceFinderFactoryTests.cs => DestinationContentReferenceFinderFactoryTests.cs} (75%)
rename tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/Search/{ManifestSourceContentReferenceFinderFactoryTests.cs => SourceContentReferenceFinderFactoryTests.cs} (75%)
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Endpoints/SourceEndpointMigrationContentLoaderTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Hooks/Filters/Default/LargeContentFilterTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Hooks/Filters/Default/ServerSubscriptionFilterTests.cs
rename tests/{Tableau.Migration.TestApplication/Hooks/Filters/SkipFilter.cs => Tableau.Migration.Tests/Unit/Engine/Hooks/Filters/Default/SkipAllFilterTests.cs} (51%)
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Hooks/PostPublish/Default/CleanupViewsPostPublishHookTests.cs
delete mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Hooks/Transformers/Default/MappedUserTransformerTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Services/MigrationServiceBuilderFactoryTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Services/MigrationServiceBuilderTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Engine/Services/MigrationServicesTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Net/Rest/RestRequestBuilderFactoryInputTests.cs
create mode 100644 tests/Tableau.Migration.Tests/Unit/Paging/IPagedResultTests.cs
diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json
index 63784e39..7c678403 100644
--- a/.config/dotnet-tools.json
+++ b/.config/dotnet-tools.json
@@ -3,14 +3,14 @@
"isRoot": true,
"tools": {
"docfx": {
- "version": "2.78.3",
+ "version": "2.78.4",
"commands": [
"docfx"
],
"rollForward": false
},
"dotnet-reportgenerator-globaltool": {
- "version": "5.4.8",
+ "version": "5.5.1",
"commands": [
"reportgenerator"
],
diff --git a/.editorconfig b/.editorconfig
index 8d9f7541..281847bd 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -7,7 +7,7 @@
]
# File header
-file_header_template = \n Copyright (c) 2025, Salesforce, Inc.\n SPDX-License-Identifier: Apache-2\n \n Licensed under the Apache License, Version 2.0 (the "License") \n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an "AS IS" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n
+file_header_template = \n Copyright (c) 2026, Salesforce, Inc.\n SPDX-License-Identifier: Apache-2\n \n Licensed under the Apache License, Version 2.0 (the "License") \n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an "AS IS" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n
#### Naming styles ####
diff --git a/.github/.secrets.default b/.github/.secrets.default
new file mode 100644
index 00000000..a667d75d
--- /dev/null
+++ b/.github/.secrets.default
@@ -0,0 +1,6 @@
+# This file is used to test github actions locally using act (https://github.com/nektos/act?tab=readme-ov-file)
+# Copy/Paste and rename to .secrets and fill in the values
+# Then use it via act cli or VSCode extension https://sanjulaganepola.github.io/github-local-actions-docs/
+
+NUGET_PUBLISH_API_KEY=
+PYPI_PUBLISH_USER_PASS=
\ No newline at end of file
diff --git a/.github/.vars.default b/.github/.vars.default
new file mode 100644
index 00000000..c08725df
--- /dev/null
+++ b/.github/.vars.default
@@ -0,0 +1,38 @@
+# This file is used to test github actions locally using act (https://github.com/nektos/act?tab=readme-ov-file)
+
+# Github repository scoped variables.
+ACT="true" # Used to let actions know they're being run locally.
+BUILD_CONFIGURATIONS="[\"Release\"]"
+BASE_OS="ubuntu-latest"
+BUILD_OS="[\"ubuntu-latest\"]"
+BUILD_PROJECT="./src/Tableau.Migration/Tableau.Migration.csproj"
+NUGET_PACKAGE_FOLDER="Tableau.Migration"
+PUBLISH_OS="ubuntu-latest"
+DOCS_OS="ubuntu-latest"
+PYTHON_NETPACKAGE_FRAMEWORK="net8.0"
+PYTHON_PUBLISH_DOCS_VERSION="3.11"
+PUBLISH_CONFIGURATION="Release"
+PUBLISH_PACKAGE_OS="ubuntu-latest"
+
+# These are github environment scoped variables.
+# Development
+NUGET_PACKAGE_REPOSITORY="https://artifactory.dev.tableautools.com/artifactory/api/nuget/pqt-tuk/Tableau.Migration"
+PYPI_PUBLISH_USER="svc_cmt"
+NUGET_PUBLISH_USER="svc_cmt"
+PYPI_PACKAGE_REPOSITORY="https://artifactory.dev.tableautools.com/artifactory/api/pypi/tab-pypi-local-tuk/"
+
+# Staging
+#NUGET_PACKAGE_REPOSITORY="https://artifactory.prod.tableautools.com/artifactory/api/nuget/power-tools-nuget-local/Tableau.Migration"
+#PYPI_PUBLISH_USER="svc_cmt"
+NUGET_PUBLISH_USER="svc_cmt"
+#PYPI_PACKAGE_REPOSITORY="https://artifactory.prod.tableautools.com/artifactory/api/pypi/tabpypi"
+
+# Public Test
+# NUGET_PACKAGE_REPOSITORY="https://apiint.nugettest.org/v3/index.json"
+# PYPI_PACKAGE_REPOSITORY="https://test.pypi.org/legacy/"
+# PYPI_PUBLISH_USER="__token__"
+
+# Public Prod
+# NUGET_PACKAGE_REPOSITORY="https://api.nuget.org/v3/index.json"
+# PYPI_PACKAGE_REPOSITORY="https://upload.pypi.org/legacy/"
+# PYPI_PUBLISH_USER="__token__"
\ No newline at end of file
diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml
index d819110a..49f8a0fa 100644
--- a/.github/workflows/build-docs.yml
+++ b/.github/workflows/build-docs.yml
@@ -19,7 +19,7 @@ jobs:
name: Build Docs (.NET ${{ inputs.dotnet-sdk-version }}) # Updated name
steps:
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup .NET environment
- name: Setup .NET ${{ inputs.dotnet-sdk-version }}
@@ -29,7 +29,7 @@ jobs:
# Setup Python environment
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ inputs.python-version }}
@@ -41,7 +41,7 @@ jobs:
# Upload Docs Artifact
- name: Upload Docs Artifact
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: docs
path: ./docs
diff --git a/.github/workflows/build-dotnet.yml b/.github/workflows/build-dotnet.yml
index cee9adda..a623f5f2 100644
--- a/.github/workflows/build-dotnet.yml
+++ b/.github/workflows/build-dotnet.yml
@@ -35,7 +35,7 @@ jobs:
## SETUP
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup .NET environment
- name: Setup .NET ${{ inputs.dotnet-sdk-version }}
@@ -45,7 +45,7 @@ jobs:
# Cache NuGet packages based on the lock file and .NET version
- name: Cache NuGet packages
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ inputs.dotnet-sdk-version }}-${{ hashFiles('**/packages.lock.json') }}
@@ -109,17 +109,16 @@ jobs:
# Upload product artifacts
- name: Upload product artifacts for python library
if: ${{ env.SHOULD_PUBLISH == 'true' }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: product-${{ matrix.config }}-net${{ inputs.dotnet-sdk-version }}
path: "./src/Python/src/tableau_migration/bin/**"
retention-days: 15 # This is not required to stick around very long as it's not pushed to production.
# Upload test artifacts
- # TODO: [W-18497981: CI/CD Improvements: Python tests should test final package | Work](https://gus.lightning.force.com/lightning/r/ADM_Work__c/a07EE00002EIUwKYAX/view)
- name: Upload Tests Artifacts
if: ${{ env.SHOULD_PUBLISH == 'true' }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: tests-${{ matrix.config }}-net${{ inputs.dotnet-sdk-version }}
path: "./dist/tests/**"
@@ -128,7 +127,7 @@ jobs:
# Upload NuGet package artifact
- name: Upload NuGet Artifact
if: ${{ env.SHOULD_PUBLISH == 'true' }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: nuget-package-${{ matrix.config }}-net${{ inputs.dotnet-sdk-version }}
path: "./src/${{ vars.NUGET_PACKAGE_FOLDER }}/bin/${{ matrix.config }}/*.nupkg"
@@ -137,7 +136,7 @@ jobs:
# Upload build output for tests
- name: Upload Build Output
if: ${{ env.SHOULD_PUBLISH == 'true' }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: build-output-${{ matrix.config }}-net${{ inputs.dotnet-sdk-version }}
path: |
diff --git a/.github/workflows/build-python-package.yml b/.github/workflows/build-python-package.yml
index 9e8be609..1f6500db 100644
--- a/.github/workflows/build-python-package.yml
+++ b/.github/workflows/build-python-package.yml
@@ -30,11 +30,11 @@ jobs:
name: Build Python Package with ${{ inputs.build-config }} configuration
steps:
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup Python environment
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ vars.PYTHON_TEST_VERSIONS }}
cache: "pip" # caching pip dependencies
@@ -44,11 +44,11 @@ jobs:
shell: pwsh
run: |
python -m pip install --upgrade pip
- python -m pip install hatch
+ python -m pip install hatch click==8.2
# Cache Hatch environments
- name: Cache Hatch environments
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
# Default Hatch env location relative to working-directory.
path: ./.hatch
@@ -58,7 +58,7 @@ jobs:
${{ runner.os }}-py${{ vars.PYTHON_TEST_VERSIONS }}-hatch-
# Download the product artifact
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@v7
with:
name: product-${{ inputs.build-config }}-net${{ inputs.dotnet-build-version }}
path: ./src/Python/src/tableau_migration/bin/
@@ -82,7 +82,7 @@ jobs:
# Upload PyPI artifact
- name: Upload Pypi Artifact
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: pypi-package-bundle
path: ${{ env.WORKING_DIRECTORY }}/tableau_migration-pypi.zip
@@ -90,7 +90,7 @@ jobs:
# Upload PyPI artifact
- name: Upload Pypi Artifacts
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: pypi-package
path: ${{ env.WORKING_DIRECTORY }}/dist/*
diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml
index 10db3618..c71bfb62 100644
--- a/.github/workflows/create-release.yml
+++ b/.github/workflows/create-release.yml
@@ -24,6 +24,10 @@ on:
description: "The github environment that has the variables and secrets"
required: true
type: string
+ dotnet-build-version:
+ description: "The .NET version used for building"
+ required: true
+ type: string
jobs:
create-release:
@@ -34,7 +38,7 @@ jobs:
# Create Release
- name: Create Release
id: create-release
- uses: actions/github-script@v7
+ uses: actions/github-script@v8
env:
RELEASE_VERSION: ${{ inputs.release-version }}
with:
@@ -67,31 +71,31 @@ jobs:
# Download Docs
- name: Download Docs
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: docs
# Download NuGet Package
- name: Download NuGet Package
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
- name: nuget-package
+ name: nuget-package-Release-net${{ inputs.dotnet-build-version }}
# Download PyPI Package
- name: Download PyPI Package
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: pypi-package-bundle
# Generate Bundle
- name: Generate Bundle
run: |
- zip -r bundle.zip ./Tableau.Migration.${{ inputs.release-version }}.nupkg docs.zip tableau_migration-pypi.zip
+ zip -r bundle.zip Tableau.Migration.${{ inputs.release-version }}.nupkg docs.zip tableau_migration-pypi.zip
# Attach Release Artifacts
- name: Attach Artifacts to Github Release
id: upload-docs
- uses: actions/github-script@v7
+ uses: actions/github-script@v8
env:
RELEASE_VERSION: ${{ inputs.release-version }}
RELEASE_ID: ${{ steps.create-release.outputs.result }}
diff --git a/.github/workflows/deploy-all.yml b/.github/workflows/deploy-all.yml
index dcdb1c18..4e458f0d 100644
--- a/.github/workflows/deploy-all.yml
+++ b/.github/workflows/deploy-all.yml
@@ -91,6 +91,7 @@ jobs:
runs-on-config: ${{ vars.PUBLISH_OS }}
release-version: ${{ inputs.release-version }}
publish-environment: ${{ inputs.publish-environment }}
+ dotnet-build-version: ${{ inputs.dotnet-build-version }}
deploy-docs:
name: Deploy Docs
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
index b8e1a53f..9dfed6f5 100644
--- a/.github/workflows/deploy-docs.yml
+++ b/.github/workflows/deploy-docs.yml
@@ -32,7 +32,7 @@ jobs:
steps:
# Download Docs
- name: Download Docs
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: docs
path: ./docs
@@ -43,7 +43,7 @@ jobs:
# Upload to GitHub Pages
- name: Upload Github Pages
- uses: actions/upload-pages-artifact@v3.0.1
+ uses: actions/upload-pages-artifact@v4.0.0
with:
path: "./docs"
diff --git a/.github/workflows/deploy-dotnet.yml b/.github/workflows/deploy-dotnet.yml
index 6758ff12..7fc7edf4 100644
--- a/.github/workflows/deploy-dotnet.yml
+++ b/.github/workflows/deploy-dotnet.yml
@@ -53,7 +53,7 @@ jobs:
}
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup .NET environment
- name: Setup .NET
@@ -65,7 +65,7 @@ jobs:
uses: ./.github/actions/setup-dotnet
# Download the NuGet package artifact
- - uses: actions/download-artifact@v4
+ - uses: actions/download-artifact@v7
with:
name: nuget-package-Release-net${{ inputs.dotnet-build-version }}
@@ -80,21 +80,15 @@ jobs:
if ("${{ vars.NUGET_PUBLISH_USER }}" -ne "") {
Write-Host "Using username and API key authentication for environment: $publishEnv"
- # Use unique source name based on GitHub run ID
- $uniqueSourceName = "$publishEnv-${{ github.run_id }}"
-
- # Add the NuGet source configuration
+ # Add the NuGet source configuration (ignore if already exists)
dotnet nuget add source ${{ env.NUGET_PACKAGE_REPOSITORY }} `
- --name $uniqueSourceName `
+ --name $publishEnv `
--username ${{ vars.NUGET_PUBLISH_USER }} `
--password ${{ secrets.NUGET_PUBLISH_API_KEY }} `
- --store-password-in-clear-text
-
- # Push the package
- dotnet nuget push Tableau.Migration.*.nupkg -s $uniqueSourceName
+ --store-password-in-clear-text 2>$null
- # Clean up temporary source
- dotnet nuget remove source $uniqueSourceName
+ # Push the package using the configured source
+ dotnet nuget push Tableau.Migration.*.nupkg -s $publishEnv
}
else {
Write-Host "Using API key only authentication for environment: $publishEnv"
diff --git a/.github/workflows/deploy-python.yml b/.github/workflows/deploy-python.yml
index 75700502..73473b65 100644
--- a/.github/workflows/deploy-python.yml
+++ b/.github/workflows/deploy-python.yml
@@ -55,11 +55,11 @@ jobs:
}
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup Python environment
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
# Only setup python if the runs-on-config is not self-hosted.
# Self-hosted runners already have python installed.
# This workflow needs to run in github on self-hosted runners to have access to artifactory.
@@ -70,22 +70,22 @@ jobs:
cache: "pip" # caching pip dependencies
# Install dependencies
- # TODO: [W-18497996: CI/CD Improvements: deploy-python should run via ...pdated more easily | Work](https://gus.lightning.force.com/lightning/r/ADM_Work__c/a07EE00002EIZBPYA5/view)
- name: Install dependencies
shell: pwsh
run: |
- python -m pip install --upgrade pip
- python -m pip install hatch twine>=6.1.0
+ python -m pip install --upgrade pip hatch
# Download python package artifact
- name: Download Python Package Artifact
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: pypi-package
path: ./dist
# Publish Python package
- name: Deploy Python Package
+ shell: pwsh
+ working-directory: ./src/Python
env:
# Twine uses env variables to set the username, password, and repository url.
TWINE_USERNAME: ${{ env.PYPI_PUBLISH_USER }}
@@ -94,4 +94,4 @@ jobs:
TWINE_REPOSITORY_URL: ${{ env.PYPI_PACKAGE_REPOSITORY }}
run: |
- python -m twine upload dist/*
+ hatch run deploy:twine upload ../../dist/*
diff --git a/.github/workflows/lint-python.yml b/.github/workflows/lint-python.yml
index b4508328..d30b5a25 100644
--- a/.github/workflows/lint-python.yml
+++ b/.github/workflows/lint-python.yml
@@ -27,18 +27,18 @@ jobs:
name: Lint Python in ${{ inputs.working-directory }} on ${{ matrix.os }}
steps:
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Setup Python environment
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ vars.PYTHON_TEST_VERSIONS }}
cache: "pip" # caching pip dependencies
# Cache Hatch environments
- name: Cache Hatch environments
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
# Default Hatch env location relative to working-directory.
path: ${{ inputs.working-directory }}/.hatch
@@ -51,7 +51,7 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
- python -m pip install hatch
+ python -m pip install hatch click==8.2
# Lint with ruff
- name: Lint with ruff
diff --git a/.github/workflows/sdk-workflow.yml b/.github/workflows/sdk-workflow.yml
index 82695dfc..1e11daa0 100644
--- a/.github/workflows/sdk-workflow.yml
+++ b/.github/workflows/sdk-workflow.yml
@@ -51,7 +51,7 @@ on:
env:
DOTNET_NOLOGO: "true"
# Centralized .NET version for building and deploying
- DOTNET_BUILD_VERSION: '9.0.x'
+ DOTNET_BUILD_VERSION: '10.0.x'
jobs:
# Define version job
@@ -64,7 +64,7 @@ jobs:
dotnet-build-version: ${{ steps.set-versions.outputs.dotnet-build-version }}
if: github.event.pull_request.draft == false
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Get Beta Version
id: get-beta-version
shell: bash
diff --git a/.github/workflows/test-dotnet.yml b/.github/workflows/test-dotnet.yml
index e9a8c4a1..c6ba8df9 100644
--- a/.github/workflows/test-dotnet.yml
+++ b/.github/workflows/test-dotnet.yml
@@ -28,7 +28,7 @@ jobs:
name: Test .NET (${{ matrix.os }}, ${{ matrix.config }}, .NET ${{ matrix.dotnet-version }})
steps:
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Clean all existing .NET installations
- name: Clean existing .NET installations
@@ -40,15 +40,15 @@ jobs:
with:
dotnet-version: ${{ matrix.dotnet-version }}
- # Setup .NET 9 SDK (Needed to run dotnet test in any matrix)
- - name: Setup .NET 9 SDK (for build compatibility)
- uses: actions/setup-dotnet@v4
+ # Setup .NET global.json SDK (Needed to run dotnet test in any matrix)
+ - name: Setup .NET ${{ inputs.dotnet-build-version }} SDK (for build compatibility)
+ uses: actions/setup-dotnet@v5
with:
- dotnet-version: '9.0.x'
+ dotnet-version: ${{ inputs.dotnet-build-version }} # Use the input for .NET version
# Cache NuGet packages based on the lock file and .NET version
- name: Cache NuGet packages
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ matrix.dotnet-version }}-${{ hashFiles('**/packages.lock.json') }}
@@ -68,7 +68,7 @@ jobs:
# Download built binaries
- name: Download Build Output
- uses: actions/download-artifact@v4
+ uses: actions/download-artifact@v7
with:
name: build-output-${{ matrix.config }}-net${{ inputs.dotnet-build-version }}
path: ./
@@ -101,7 +101,7 @@ jobs:
# Upload test results
- name: Upload Test Results
if: ${{ always() }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: dotnet-results-${{ matrix.os }}-${{ matrix.config }}-net${{ matrix.dotnet-version }}
path: TestResults-${{ matrix.os }}-${{ matrix.config }}-net${{ matrix.dotnet-version }}
diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml
index b519674f..011c83ce 100644
--- a/.github/workflows/test-python.yml
+++ b/.github/workflows/test-python.yml
@@ -34,7 +34,7 @@ jobs:
name: Test Python ${{ inputs.test-name }} (${{ matrix.os }}, ${{ matrix.config }}, .NET ${{ matrix.dotnet-version }})
steps:
# Checkout the repository
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
# Clean all existing .NET installations
- name: Clean existing .NET installations
@@ -46,6 +46,18 @@ jobs:
with:
dotnet-version: ${{ matrix.dotnet-version }} # Pass the .NET version from the matrix
+ # Setup global.json .NET environment
+ - name: Setup global.json .NET ${{ inputs.dotnet-build-version }}
+ uses: ./.github/actions/setup-dotnet
+ with:
+ dotnet-version: ${{ inputs.dotnet-build-version }} # Use the input for .NET version
+
+ # Setup .NET global.json SDK (Needed to run dotnet test in any matrix)
+ - name: Setup .NET ${{ inputs.dotnet-build-version }} SDK (for build compatibility)
+ uses: actions/setup-dotnet@v5
+ with:
+ dotnet-version: ${{ inputs.dotnet-build-version }} # Use the input for .NET version
+
# Restore Tools (i.e. report generator) - skip for .NET 8
# Code coverage report generation is only supported on the latest .NET version
- name: Restore .NET Tools
@@ -54,14 +66,14 @@ jobs:
# Setup Python environment
- name: Setup Python
- uses: actions/setup-python@v5
+ uses: actions/setup-python@v6
with:
python-version: ${{ vars.PYTHON_TEST_VERSIONS }}
cache: "pip" # caching pip dependencies
# Cache Hatch environments
- name: Cache Hatch environments
- uses: actions/cache@v4
+ uses: actions/cache@v5
with:
# Default Hatch env location relative to working-directory.
path: ./.hatch
@@ -74,17 +86,22 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
- python -m pip install hatch
+ python -m pip install hatch click==8.2
- # Download the published test artifacts
- # This step is only needed when builing the main python project, but it left in this
- # reuseable workflow for simplicity.
- # TODO: [W-18497981: CI/CD Improvements: Python tests should test final package | Work](https://gus.lightning.force.com/lightning/r/ADM_Work__c/a07EE00002EIUwKYAX/view)
- - uses: actions/download-artifact@v4
+ # Download the product binaries
+ - name: Download product binaries
+ uses: actions/download-artifact@v7
with:
- name: tests-${{ matrix.config }}-net${{ inputs.dotnet-build-version }}
+ name: product-${{ matrix.config }}-net${{ inputs.dotnet-build-version }}
path: ./src/Python/src/tableau_migration/bin/
+ # Download the test binaries
+ - name: Download test binaries
+ uses: actions/download-artifact@v7
+ with:
+ name: tests-${{ matrix.config }}-net${{ inputs.dotnet-build-version }}
+ path: ./dist/tests/
+
# Test with pytest
- name: Test with pytest
run: python -m hatch --data-dir=.hatch --cache-dir=.hatch_cache run test:testcov
@@ -103,7 +120,7 @@ jobs:
# Upload test results
- name: Upload Test Results
if: ${{ !(matrix.dotnet-version == '8.0.x') }}
- uses: actions/upload-artifact@v4
+ uses: actions/upload-artifact@v6
with:
name: ${{ inputs.test-name }}-results-${{ matrix.os }}-${{ matrix.config }}-net${{ matrix.dotnet-version }}
path: ${{ inputs.working-directory }}/TestResults
diff --git a/Directory.Build.props b/Directory.Build.props
index a808b66a..26b8702f 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -4,12 +4,12 @@
enable
true
true
- 5.3.1
+ 6.0.0
Salesforce, Inc.
Salesforce, Inc.
- Copyright (c) 2025, Salesforce, Inc. and its licensors
+ Copyright (c) 2026, Salesforce, Inc. and its licensors
Apache-2.0
- 11.3.2
+ 11.3.9