diff --git a/Migration.Tool.CLI/README.md b/Migration.Tool.CLI/README.md
index f35dd1f5..3862e5b6 100644
--- a/Migration.Tool.CLI/README.md
+++ b/Migration.Tool.CLI/README.md
@@ -323,7 +323,27 @@ The migration includes:
* All system fields from the *CMS_User* and *CMS_UserSettings* tables. You can customize which fields are migrated via
the `MemberIncludeUserSystemFields` configuration option. See [configuration](#configuration).
-* All custom fields added to the *CMS_User* and *CMS_UserSettings* tables are migrated under `CMS_Member`.
+* All custom fields added to the *CMS_User* and *CMS_UserSettings* tables are migrated under `CMS_Member`. The columns specified in the `MemberIncludeSystemFields` option are appended to the `CMS_Member` table in the order in which they were specified.
+ As an example, take the following `CMS_Member` columns
+
+ ```text
+ |MemberId|MemberEmail|...|MemberSecurityStamp|
+ ```
+
+ And the following `Migration.Tool.CLI/appsettings.json` configuration.
+
+ ```json
+ {
+ "MemberIncludeUserSystemFields": "FirstName|LastName|UserPrivilegeLevel"
+ }
+ ```
+
+ This will result in the following `CMS_Member` structure after migration.
+
+ ```text
+ |MemberId|MemberEmail|...|MemberSecurityStamp|FirstName|LastName|UserPrivilegeLevel|`
+ ```
+
> If you are migrating custom fields, the `--custom-modules` migration command must be run before the `--members`
command. For example:
@@ -383,8 +403,8 @@ Add the options under the `Settings` section in the configuration file.
| Configuration | Description |
|-------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| KxConnectionString | The connection string to the source Kentico Xperience 13 database. |
-| KxCmsDirPath | The absolute file system path of the **CMS** folder in the source Kentico Xperience 13 administration project. Required to migrate media library files. |
+| KxConnectionString | The connection string to the source Kentico Xperience 13, Kentico 12, or Kentico 11 database. |
+| KxCmsDirPath | The absolute file system path of the **CMS** folder in the source Kentico Xperience 13, Kentico 12, or Kentico 11 administration project. Required to migrate media library files. |
| XbKDirPath | The absolute file system path of the root of the target Xperience by Kentico project. Required to migrate media library and page attachment files. |
| XbKApiSettings | Configuration options set for the API when creating migrated objects in the target application.
The `ConnectionStrings.CMSConnectionString`option is required - set the connection string to the target Xperience by Kentico database (the same value as `XbKConnectionString`). |
| MigrationProtocolPath | The absolute file system path of the location where the [migration protocol file](./MIGRATION_PROTOCOL_REFERENCE.md) is generated.
For example: `"C:\\Logs\\Migration.Tool.Protocol.log"` |
diff --git a/Migration.Tool.Common/Resources.Designer.cs b/Migration.Tool.Common/Resources.Designer.cs
index 568fc548..03c36cbb 100644
--- a/Migration.Tool.Common/Resources.Designer.cs
+++ b/Migration.Tool.Common/Resources.Designer.cs
@@ -1,227 +1,272 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace Migration.Tool.Common {
- using System;
-
-
- ///
- /// A strongly-typed resource class, for looking up localized strings, etc.
- ///
- // This class was auto-generated by the StronglyTypedResourceBuilder
- // class via a tool like ResGen or Visual Studio.
- // To add or remove a member, edit your .ResX file then rerun ResGen
- // with the /str option, or rebuild your VS project.
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- public class Resources {
-
- private static global::System.Resources.ResourceManager resourceMan;
-
- private static global::System.Globalization.CultureInfo resourceCulture;
-
- [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Resources() {
- }
-
- ///
- /// Returns the cached ResourceManager instance used by this class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Migration.Tool.Common.Resources", typeof(Resources).Assembly);
- resourceMan = temp;
- }
- return resourceMan;
- }
- }
-
- ///
- /// Overrides the current thread's CurrentUICulture property for all
- /// resource lookups using this strongly typed resource class.
- ///
- [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Globalization.CultureInfo Culture {
- get {
- return resourceCulture;
- }
- set {
- resourceCulture = value;
- }
- }
-
- ///
- /// Looks up a localized string similar to Attachment moved to media library, media file path: ({0}/{1}).
- ///
- public static string Attachment_MovedToLibrary {
- get {
- return ResourceManager.GetString("Attachment_MovedToLibrary", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Grouped attachment moved to media library, media file path: ({0}/{1}).
- ///
- public static string AttachmentGrouped_ModevToLibrary {
- get {
- return ResourceManager.GetString("AttachmentGrouped_ModevToLibrary", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0}Configuration error{1}: {2}.
- ///
- public static string ConfigurationError {
- get {
- return ResourceManager.GetString("ConfigurationError", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0}Possible fix{1}: {2}.
- ///
- public static string ConfigurationRecommendedFix {
- get {
- return ResourceManager.GetString("ConfigurationRecommendedFix", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Configuration value in path 'Settings.XbKApiSettings.ConnectionStrings.CMSConnectionString' is required.
- ///
- public static string ConfigurationValidator_GetValidationErrors_CmsConnectionString_IsRequired {
- get {
- return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_CmsConnectionString_IsRequired", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Section 'Settings.XbKApiSettings.ConnectionStrings' is required.
- ///
- public static string ConfigurationValidator_GetValidationErrors_ConnectionStrings_IsRequired {
- get {
- return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_ConnectionStrings_IsRequired", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Section 'Settings' is required.
- ///
- public static string ConfigurationValidator_GetValidationErrors_Settings_IsRequired {
- get {
- return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_Settings_IsRequired", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Configuration value in path 'Settings.KxCmsDirPath' is empty, it is recommended to set source instance filesystem path.
- ///
- public static string ConfigurationValidator_GetValidationErrors_SourceCmsDirPath_IsRecommended {
- get {
- return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_SourceCmsDirPath_IsRecommended", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Configuration value in path 'Settings.KxConnectionString' is required.
- ///
- public static string ConfigurationValidator_GetValidationErrors_SourceConnectionString_IsRequired {
- get {
- return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_SourceConnectionString_IsRequired", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Configuration value in path 'Settings.XbKDirPath' is required.
- ///
- public static string ConfigurationValidator_GetValidationErrors_TargetCmsDirPath_IsRequired {
- get {
- return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_TargetCmsDirPath_IsRequired", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Configuration value in path 'Settings.XbKConnectionString' is required.
- ///
- public static string ConfigurationValidator_GetValidationErrors_TargetConnectionString_IsRequired {
- get {
- return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_TargetConnectionString_IsRequired", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Section 'Settings.XbKApiSettings' is required.
- ///
- public static string ConfigurationValidator_GetValidationErrors_TargetKxpApiSettings_IsRequired {
- get {
- return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_TargetKxpApiSettings_IsRequired", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Configuration value in path 'Settings.UseOmActivityNodeRelationAutofix' must fit one of: {0}.
- ///
- public static string ConfigurationValidator_GetValidationErrors_UseOmActivityNodeRelationAutofix_MustFit {
- get {
- return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_UseOmActivityNodeRelationAutofix_MustF" +
- "it", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Configuration value in path 'Settings.UseOmActivitySiteRelationAutofix' must fit one of: {0}.
- ///
- public static string ConfigurationValidator_GetValidationErrors_UseOmActivitySiteRelationAutofix_MustFit {
- get {
- return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_UseOmActivitySiteRelationAutofix_MustF" +
- "it", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0}Configuration warning{1}: {2}.
- ///
- public static string ConfigurationWarning {
- get {
- return ResourceManager.GetString("ConfigurationWarning", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Document relationship is currently not supported - related to: {0}.
- ///
- public static string Document_Relationship_NotSupported {
- get {
- return ResourceManager.GetString("Document_Relationship_NotSupported", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to {0} ExplicitPrimaryKeyMapping of {1} is required..
- ///
- public static string Exception_MappingIsRequired {
- get {
- return ResourceManager.GetString("Exception_MappingIsRequired", resourceCulture);
- }
- }
-
- ///
- /// Looks up a localized string similar to Press any key to exit program....
- ///
- public static string ProgramAwaitingExitMessage {
- get {
- return ResourceManager.GetString("ProgramAwaitingExitMessage", resourceCulture);
- }
- }
- }
-}
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace Migration.Tool.Common
+{
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ public class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if (object.ReferenceEquals(resourceMan, null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Migration.Tool.Common.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Attachment moved to media library, media file path: ({0}/{1}).
+ ///
+ public static string Attachment_MovedToLibrary
+ {
+ get
+ {
+ return ResourceManager.GetString("Attachment_MovedToLibrary", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Grouped attachment moved to media library, media file path: ({0}/{1}).
+ ///
+ public static string AttachmentGrouped_ModevToLibrary
+ {
+ get
+ {
+ return ResourceManager.GetString("AttachmentGrouped_ModevToLibrary", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0}Configuration error{1}: {2}.
+ ///
+ public static string ConfigurationError
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationError", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0}Possible fix{1}: {2}.
+ ///
+ public static string ConfigurationRecommendedFix
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationRecommendedFix", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Configuration value in path 'Settings.XbKApiSettings.ConnectionStrings.CMSConnectionString' is required.
+ ///
+ public static string ConfigurationValidator_GetValidationErrors_CmsConnectionString_IsRequired
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_CmsConnectionString_IsRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Section 'Settings.XbKApiSettings.ConnectionStrings' is required.
+ ///
+ public static string ConfigurationValidator_GetValidationErrors_ConnectionStrings_IsRequired
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_ConnectionStrings_IsRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Section 'Settings' is required.
+ ///
+ public static string ConfigurationValidator_GetValidationErrors_Settings_IsRequired
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_Settings_IsRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Configuration value in path 'Settings.KxCmsDirPath' is empty, it is recommended to set source instance filesystem path.
+ ///
+ public static string ConfigurationValidator_GetValidationErrors_SourceCmsDirPath_IsRecommended
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_SourceCmsDirPath_IsRecommended", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Configuration value in path 'Settings.KxConnectionString' is required.
+ ///
+ public static string ConfigurationValidator_GetValidationErrors_SourceConnectionString_IsRequired
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_SourceConnectionString_IsRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Configuration value in path 'Settings.XbKDirPath' is required.
+ ///
+ public static string ConfigurationValidator_GetValidationErrors_TargetCmsDirPath_IsRequired
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_TargetCmsDirPath_IsRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Configuration value in path 'Settings.XbKConnectionString' is required.
+ ///
+ public static string ConfigurationValidator_GetValidationErrors_TargetConnectionString_IsRequired
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_TargetConnectionString_IsRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Section 'Settings.XbKApiSettings' is required.
+ ///
+ public static string ConfigurationValidator_GetValidationErrors_TargetKxpApiSettings_IsRequired
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_TargetKxpApiSettings_IsRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Configuration value in path 'Settings.UseOmActivityNodeRelationAutofix' must fit one of: {0}.
+ ///
+ public static string ConfigurationValidator_GetValidationErrors_UseOmActivityNodeRelationAutofix_MustFit
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_UseOmActivityNodeRelationAutofix_MustF" +
+ "it", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Configuration value in path 'Settings.UseOmActivitySiteRelationAutofix' must fit one of: {0}.
+ ///
+ public static string ConfigurationValidator_GetValidationErrors_UseOmActivitySiteRelationAutofix_MustFit
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationValidator_GetValidationErrors_UseOmActivitySiteRelationAutofix_MustF" +
+ "it", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0}Configuration warning{1}: {2}.
+ ///
+ public static string ConfigurationWarning
+ {
+ get
+ {
+ return ResourceManager.GetString("ConfigurationWarning", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Document relationship is currently not supported - related to: {0}.
+ ///
+ public static string Document_Relationship_NotSupported
+ {
+ get
+ {
+ return ResourceManager.GetString("Document_Relationship_NotSupported", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to {0} ExplicitPrimaryKeyMapping of {1} is required..
+ ///
+ public static string Exception_MappingIsRequired
+ {
+ get
+ {
+ return ResourceManager.GetString("Exception_MappingIsRequired", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to Press any key to exit program....
+ ///
+ public static string ProgramAwaitingExitMessage
+ {
+ get
+ {
+ return ResourceManager.GetString("ProgramAwaitingExitMessage", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/README.md b/README.md
index fd304fd7..c37ffdce 100644
--- a/README.md
+++ b/README.md
@@ -10,15 +10,22 @@ This repository is part of the [Xperience by Kentico Migration Tool](https://git
The Kentico Migration Tool transfers content and other data from **Kentico Xperience 13**, **Kentico 12** or **Kentico 11** to **Xperience by Kentico**.
+This repository contains several README documents containing information necessary for the correct usage of the Kentico Migration Tool. Namely:
+
+- [Migration CLI](./Migration.Toolkit.CLI/README.md) -- information about the necessary set up before running the Kentico Migration Tool.
+- [Usage Guide](./docs/Usage-Guide.md) -- information about what kind of projects the Kentico Migration Tool supports.
+- [Supported Data](./docs/Supported-Data.md) -- lists all available data for migration
+- [Migration Protocol](./Migration.Toolkit.CLI/MIGRATION_PROTOCOL_REFERENCE.md) -- provides information about the results of the migration and required manual steps, etc.
+
## Library Version Matrix
| Xperience Version | Library Version |
-| ----------------- |-----------------|
-| == 29.1.0 | == 1.0.0 |
-| == 29.2.0 | == 1.1.0 |
-| == 29.3.3 | == 1.2.0 |
-| == 29.5.2 | == 1.3.0 |
-| == 29.5.2 | == 1.4.0 |
+| ----------------- | --------------- |
+| 29.6.0 | 1.4.0 |
+| 29.5.2 | 1.3.0 |
+| 29.3.3 | 1.2.0 |
+| 29.2.0 | 1.1.0 |
+| 29.1.0 | 1.0.0 |
## Dependencies
@@ -34,15 +41,17 @@ Follow the steps below to run the Kentico Migration Tool:
3. Configure the options in the `Migration.Tool.CLI/appsettings.json` configuration file. See [`Migration.Tool.CLI/README.md - Configuration`](./Migration.Tool.CLI/README.md#Configuration) for details.
4. Rebuild the solution and restore all required NuGet packages.
5. Open the command line prompt.
-6. Navigate to the output directory of the `Migration.Tool.CLI` project.
+6. Navigate to the output directory of the `Migration.Tool.CLI` project. (under `.\Migration.Toolkit.CLI\bin\Debug\net8.0\`)
7. Run the `Migration.Tool.CLI.exe migrate` command.
- The following example shows the command with all parameters for complete migration:
```powershell
- Migration.Tool.CLI.exe migrate --sites --custom-modules --users --settings-keys --page-types --pages --attachments --contact-management --forms --media-libraries --data-protection --countries
+ .\Migration.Tool.CLI.exe migrate --sites --custom-modules --users --settings-keys --page-types --pages --attachments --contact-management --forms --media-libraries --data-protection --countries --custom-tables --members --categories
```
+ - You can migrate your projects iteratively. For repeated runs bypass depency checks by using the `--bypass-dependency-check` parameter, if you know that required dependencies were already migrated succesfully.
+
8. Observe the command line output. The command output is also stored in a log file (`logs\log-.txt` under the output directory by default), which you can review later.
9. Review the migration protocol, which provides information about the result of the migration, lists required manual steps, etc.
@@ -51,9 +60,9 @@ Follow the steps below to run the Kentico Migration Tool:
The data is now migrated to the target Xperience by Kentico instance according to your configuration. See [`Migration.Tool.CLI/README.md`](./Migration.Tool.CLI/README.md) for detailed information about the migration CLI, configuration options, instructions related to individual object types, and manual migration steps.
-## Full Instructions
+## Full Requirements
-View the [Usage Guide](./docs/Usage-Guide.md) for more detailed instructions.
+View the [Usage Guide](./docs/Usage-Guide.md) for information about what kind of projects the Kentico Migration Tool supports.
## Changelog of recent updates