Jumoo / uSyncMigrations

Rough and ready migration code.
Mozilla Public License 2.0
44 stars 57 forks source link

Migrating In-Place (v10 -> v10) to Change Grid Layout to Block Grid #254

Open Nathan-H-Thinix opened 9 months ago

Nathan-H-Thinix commented 9 months ago

I am currently trying to update the grid layouts and nested contents on a pretty sizable Umbraco 10 site to a block grid. The site was originally on Umbraco 7 and migrated manually (i.e. without uSync) earlier this year, so the grid layouts and nested contents in the migrated content were kept for consistency between the old and new site (and without the knowledge that those two were going to be removed in the near future).

This puts me in a predicament where the site is already Umbraco 10, but I need a relatively quick and painless way to transform the grid layouts and nested contents into their replacements. I don't think a revert back to v7/v8 is possible because of v10 additions being present on the site, so I was wondering if there was a way to use this tool to do an in-place migration on the v10 site data solely to convert the grid layouts and nested contents.

I have tried migrating the site a few times using this tool in an attempt to do an in-place migration, and while the content nodes and everything else in the site is correct, the content for the grid layouts and nested contents are totally wiped and I'm also unable to save any content nodes due to some error (I can get a screenshot if desired).

I have inspected the config files and I do see some of the grid layout content in the files, but this data does not show up in the content nodes on backoffice so I'm not sure if it's migrating to grid layout correctly.

If you have any suggestions for how to handle this situation or if the tool is/will not be capable of doing what I want to do with it, please let me know.

KevinJump commented 9 months ago

Hi Nathan,

In theory yes, in the terms of uSync.Migrations this is a "conversion" rather than a migration - so you would press 'convert' on the dashboard and then follow the steps.

When you do this it should detect that the files are from 'v8' (v8 to v13 uSync files are all the 'same') - and offer you the option to convert to blocklist / grids.

image

We would still recommend, that you do all of this on a copy of the site, (so you could use your current uSync files on a new v10 site to get you in a place where you could convert).

It might be worth doing just one first - and seeing what results you get nested to block list, should work' because that is the 'simplest' of the conversions

As you are doing things on a test site, you can speed things up, by removing the media folders, and maybe some of the things inside the content folder, so the migrations only runs through a few pages, that might help you see if its working / debug what any issues might be.

Nathan-H-Thinix commented 9 months ago

Small update on my testing so far, doing the nested content only conversion worked perfectly, all the nested content transferred to block list and the elements carried over correctly.

I tried applying both a grid only and the full migration to the site after doing nested content only, but this did not result in any changes. I tried site conversion but no files get changed. I also tried getting the site in a zip and performing the conversion on that, and while it does seem to go through the site and convert it, the result still contains grid layout. Notably, in the results it says all passed with one error as opposed to all passing with the nested content only.

I also did a little testing starting with grid only conversion, and that also resulted in no files changed similar to the second migration in the scenario/s described earlier.

I have yet to do further testing with the full nested content + grid layout conversion, but I figured I would update on the two-step migration I have tried and see if that provides any leads.

Nathan-H-Thinix commented 8 months ago

Found some log information that may or may not be useful

Conversion Logs

This is start of the logs after starting the migration conversion:

{"@t":"2023-12-11T15:22:52.3814831Z","@mt":"[{type}] Migration Prep completed ({elapsed}ms)","type":"Media","elapsed":1184,"SourceContext":"uSync.Migrations.Core.Handlers.Eight.MediaMigrationHandler","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:52.3824428Z","@mt":"Migrating {handler} files","handler":"TemplateMigrationHandler","SourceContext":"uSync.Migrations.Core.Services.SyncMigrationService","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:52.4441753Z","@mt":"Migrating {handler} files","handler":"LanguageMigrationHandler","SourceContext":"uSync.Migrations.Core.Services.SyncMigrationService","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:52.4516335Z","@mt":"Migrating {handler} files","handler":"DictionaryMigrationHandler","SourceContext":"uSync.Migrations.Core.Services.SyncMigrationService","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:52.4517838Z","@mt":"Migrating {handler} files","handler":"DataTypeMigrationHandler","SourceContext":"uSync.Migrations.Core.Services.SyncMigrationService","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:52.8543007Z","@mt":"Migrating {handler} files","handler":"ContentTypeMigrationHandler","SourceContext":"uSync.Migrations.Core.Services.SyncMigrationService","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.3132675Z","@mt":"Migrating {handler} files","handler":"MediaTypeMigrationHandler","SourceContext":"uSync.Migrations.Core.Services.SyncMigrationService","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.3518692Z","@mt":"Migrating {handler} files","handler":"MacroMigrationHandler","SourceContext":"uSync.Migrations.Core.Services.SyncMigrationService","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.4540875Z","@mt":"Migrating {handler} files","handler":"ContentMigrationHandler","SourceContext":"uSync.Migrations.Core.Services.SyncMigrationService","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.4899631Z","@mt":"Cannot find content type key from alias {alias}","@l":"Warning","alias":"Jumbotron","SourceContext":"uSync.Migrations.Migrators.BlockGrid.Content.GridToBlockContentHelper","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.4903589Z","@mt":"Cannot find content type key from alias {alias}","@l":"Warning","alias":"Split","SourceContext":"uSync.Migrations.Migrators.BlockGrid.Content.GridToBlockContentHelper","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.4904279Z","@mt":"Cannot find content type key from alias {alias}","@l":"Warning","alias":"Split","SourceContext":"uSync.Migrations.Migrators.BlockGrid.Content.GridToBlockContentHelper","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.4904876Z","@mt":"Cannot find content type key from alias {alias}","@l":"Warning","alias":"Split","SourceContext":"uSync.Migrations.Migrators.BlockGrid.Content.GridToBlockContentHelper","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.4905417Z","@mt":"Cannot find content type key from alias {alias}","@l":"Warning","alias":"Split","SourceContext":"uSync.Migrations.Migrators.BlockGrid.Content.GridToBlockContentHelper","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.4905898Z","@mt":"Cannot find content type key from alias {alias}","@l":"Warning","alias":"Split","SourceContext":"uSync.Migrations.Migrators.BlockGrid.Content.GridToBlockContentHelper","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.4906276Z","@mt":"Cannot find content type key from alias {alias}","@l":"Warning","alias":"renderUmbracoForm","SourceContext":"uSync.Migrations.Migrators.BlockGrid.Content.GridToBlockContentHelper","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.5030799Z","@mt":"Cannot find content type key from alias {alias}","@l":"Warning","alias":"Jumbotron","SourceContext":"uSync.Migrations.Migrators.BlockGrid.Content.GridToBlockContentHelper","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.5241274Z","@mt":"Cannot find content type key from alias {alias}","@l":"Warning","alias":"Split","SourceContext":"uSync.Migrations.Migrators.BlockGrid.Content.GridToBlockContentHelper","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.5271948Z","@mt":"Cannot find content type key from alias {alias}","@l":"Warning","alias":"Jumbotron","SourceContext":"uSync.Migrations.Migrators.BlockGrid.Content.GridToBlockContentHelper","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.5331992Z","@mt":"Cannot find content type key from alias {alias}","@l":"Warning","alias":"Jumbotron","SourceContext":"uSync.Migrations.Migrators.BlockGrid.Content.GridToBlockContentHelper","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}

There seems to be a warning for every macro used in the existing grid layouts which I'm guessing is because of issues migrating custom macros. There's about 1400 of these warnings, not sure if the volume matters or not.

I also get two errors

@mt":"Failed to migrate property [{editorAlias} {property}] {ex}","@l":"Warning","editorAlias":"Umbraco.NestedContent","property":"featuresIconGrid","ex":"Cannot deserialize the current JSON object (e.g. {\"name\":\"value\"}) into type 'System.Collections.Generic.IList`1[uSync.Migrations.Migrators.Core.NestedContentRowValue]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.\r\nTo fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.\r\nPath 'layout', line 2, position 11.","SourceContext":"uSync.Migrations.Core.Handlers.Eight.ContentMigrationHandler","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"WARN ","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.8232389Z","@mt":"Error while processing {file}","@l":"Error","@x":"System.Exception: Failed migrating [Umbraco.NestedContent - featuresIconGrid] : Cannot deserialize the current JSON object (e.g. {\"name\":\"value\"}) into type 'System.Collections.Generic.IList`1[uSync.Migrations.Migrators.Core.NestedContentRowValue]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.\r\nTo fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.\r\nPath 'layout', line 2, position 11.\r\n ---> Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {\"name\":\"value\"}) into type 'System.Collections.Generic.IList`1[uSync.Migrations.Migrators.Core.NestedContentRowValue]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.\r\nTo fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.\r\nPath 'layout', line 2, position 11.\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)\r\n   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)\r\n   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)\r\n   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)\r\n   at uSync.Migrations.Migrators.Optional.NestedToBlockListMigrator.GetContentValue(SyncMigrationContentProperty contentProperty, SyncMigrationContext context)\r\n   at uSync.Migrations.Core.Handlers.Shared.SharedContentBaseHandler`1.MigrateContentValue(SyncMigrationContentProperty migrationProperty, SyncMigrationContext context)\r\n   at uSync.Migrations.Core.Handlers.Shared.SharedContentBaseHandler`1.ConvertPropertyValue(String itemType, String contentType, XElement property, SyncMigrationContext context)\r\n   --- End of inner exception stack trace ---\r\n   at uSync.Migrations.Core.Handlers.Shared.SharedContentBaseHandler`1.ConvertPropertyValue(String itemType, String contentType, XElement property, SyncMigrationContext context)\r\n   at uSync.Migrations.Core.Handlers.Shared.SharedContentBaseHandler`1.MigrateFile(XElement source, Int32 level, SyncMigrationContext context)\r\n   at uSync.Migrations.Core.Handlers.MigrationHandlerBase`1.MigrateFolder(String folder, Int32 level, SyncMigrationContext context)","file":"C:\\Users\\User\\Documents\\git\\UmbracoMultisite\\UmbracoMultisite\\uSync\\v9\\Content\\contentA.config","SourceContext":"uSync.Migrations.Core.Handlers.Eight.ContentMigrationHandler","ActionId":"4530f006-1e49-4236-9c9a-63e2c265c29b","ActionName":"uSync.Migrations.Client.Controllers.uSyncMigrationsController.Migrate (uSync.Migrations.Client)","RequestId":"0HMVQBJDEPOMC:00000001","RequestPath":"/umbraco/backoffice/api/usyncmigrations/Migrate","ConnectionId":"0HMVQBJDEPOMC","ProcessId":26100,"ProcessName":"UmbracoMultisite","ThreadId":3,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"ERROR","HttpRequestId":"17cf5d87-d68f-4183-8671-e48d96b87939","HttpRequestNumber":2,"HttpSessionId":"492bcf42-4091-44ca-5523-6736a5e86e5f"}
{"@t":"2023-12-11T15:22:53.8531759Z","

Migration Logs

Here's a snippet of the errors/warnings I get when running the migration:

{"@t":"2023-12-11T16:50:52.3815290Z","@mt":"Document {ContentName} (id={ContentId}) has been published.","ContentName":"ContentA","ContentId":1366,"SourceContext":"Umbraco.Cms.Core.Services.ContentService","ActionId":"a6ff5e15-498f-4349-b409-579a99c654cb","ActionName":"uSync.BackOffice.Controllers.uSyncDashboardApiController.ImportHandler (uSync.BackOffice)","RequestId":"0HMVQCSFQ3LOV:00000117","RequestPath":"/umbraco/backoffice/usync/usyncdashboardapi/ImportHandler","ConnectionId":"0HMVQCSFQ3LOV","ProcessId":9604,"ProcessName":"UmbracoMultisite","ThreadId":8,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"db593805-2c13-49ac-9fdc-08a0ee352c86","HttpRequestNumber":49,"HttpSessionId":"fbc52de6-ae31-e99b-cc52-ffecd26f3d6a"}
{"@t":"2023-12-11T16:50:52.8627040Z","@mt":"{0} doesn't have a ValueEditor that implements IDataValueReference","0":"Umbraco.TrueFalse","SourceContext":"Umbraco.Cms.Infrastructure.Templates.HtmlMacroParameterParser","ActionId":"a6ff5e15-498f-4349-b409-579a99c654cb","ActionName":"uSync.BackOffice.Controllers.uSyncDashboardApiController.ImportHandler (uSync.BackOffice)","RequestId":"0HMVQCSFQ3LOV:00000117","RequestPath":"/umbraco/backoffice/usync/usyncdashboardapi/ImportHandler","ConnectionId":"0HMVQCSFQ3LOV","ProcessId":9604,"ProcessName":"UmbracoMultisite","ThreadId":8,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"db593805-2c13-49ac-9fdc-08a0ee352c86","HttpRequestNumber":49,"HttpSessionId":"fbc52de6-ae31-e99b-cc52-ffecd26f3d6a"}
{"@t":"2023-12-11T16:50:52.8632992Z","@mt":"{0} doesn't have a ValueEditor that implements IDataValueReference","0":"Umbraco.TextBox","SourceContext":"Umbraco.Cms.Infrastructure.Templates.HtmlMacroParameterParser","ActionId":"a6ff5e15-498f-4349-b409-579a99c654cb","ActionName":"uSync.BackOffice.Controllers.uSyncDashboardApiController.ImportHandler (uSync.BackOffice)","RequestId":"0HMVQCSFQ3LOV:00000117","RequestPath":"/umbraco/backoffice/usync/usyncdashboardapi/ImportHandler","ConnectionId":"0HMVQCSFQ3LOV","ProcessId":9604,"ProcessName":"UmbracoMultisite","ThreadId":8,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"db593805-2c13-49ac-9fdc-08a0ee352c86","HttpRequestNumber":49,"HttpSessionId":"fbc52de6-ae31-e99b-cc52-ffecd26f3d6a"}
{"@t":"2023-12-11T16:50:52.8633383Z","@mt":"{0} doesn't have a ValueEditor that implements IDataValueReference","0":"Umbraco.TextArea","SourceContext":"Umbraco.Cms.Infrastructure.Templates.HtmlMacroParameterParser","ActionId":"a6ff5e15-498f-4349-b409-579a99c654cb","ActionName":"uSync.BackOffice.Controllers.uSyncDashboardApiController.ImportHandler (uSync.BackOffice)","RequestId":"0HMVQCSFQ3LOV:00000117","RequestPath":"/umbraco/backoffice/usync/usyncdashboardapi/ImportHandler","ConnectionId":"0HMVQCSFQ3LOV","ProcessId":9604,"ProcessName":"UmbracoMultisite","ThreadId":8,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"db593805-2c13-49ac-9fdc-08a0ee352c86","HttpRequestNumber":49,"HttpSessionId":"fbc52de6-ae31-e99b-cc52-ffecd26f3d6a"}
{"@t":"2023-12-11T16:50:52.8633840Z","@mt":"{0} doesn't have a ValueEditor that implements IDataValueReference","0":"Umbraco.TextBox","SourceContext":"Umbraco.Cms.Infrastructure.Templates.HtmlMacroParameterParser","ActionId":"a6ff5e15-498f-4349-b409-579a99c654cb","ActionName":"uSync.BackOffice.Controllers.uSyncDashboardApiController.ImportHandler (uSync.BackOffice)","RequestId":"0HMVQCSFQ3LOV:00000117","RequestPath":"/umbraco/backoffice/usync/usyncdashboardapi/ImportHandler","ConnectionId":"0HMVQCSFQ3LOV","ProcessId":9604,"ProcessName":"UmbracoMultisite","ThreadId":8,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"db593805-2c13-49ac-9fdc-08a0ee352c86","HttpRequestNumber":49,"HttpSessionId":"fbc52de6-ae31-e99b-cc52-ffecd26f3d6a"}
{"@t":"2023-12-11T16:50:52.8634061Z","@mt":"{0} doesn't have a ValueEditor that implements IDataValueReference","0":"Umbraco.TextArea","SourceContext":"Umbraco.Cms.Infrastructure.Templates.HtmlMacroParameterParser","ActionId":"a6ff5e15-498f-4349-b409-579a99c654cb","ActionName":"uSync.BackOffice.Controllers.uSyncDashboardApiController.ImportHandler (uSync.BackOffice)","RequestId":"0HMVQCSFQ3LOV:00000117","RequestPath":"/umbraco/backoffice/usync/usyncdashboardapi/ImportHandler","ConnectionId":"0HMVQCSFQ3LOV","ProcessId":9604,"ProcessName":"UmbracoMultisite","ThreadId":8,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"db593805-2c13-49ac-9fdc-08a0ee352c86","HttpRequestNumber":49,"HttpSessionId":"fbc52de6-ae31-e99b-cc52-ffecd26f3d6a"}
{"@t":"2023-12-11T16:50:53.0746365Z","@mt":"Adding examine event handlers for {RegisteredIndexers} index providers.","RegisteredIndexers":4,"SourceContext":"Umbraco.Cms.Infrastructure.Examine.ExamineUmbracoIndexingHandler","ActionId":"a6ff5e15-498f-4349-b409-579a99c654cb","ActionName":"uSync.BackOffice.Controllers.uSyncDashboardApiController.ImportHandler (uSync.BackOffice)","RequestId":"0HMVQCSFQ3LOV:00000117","RequestPath":"/umbraco/backoffice/usync/usyncdashboardapi/ImportHandler","ConnectionId":"0HMVQCSFQ3LOV","ProcessId":9604,"ProcessName":"UmbracoMultisite","ThreadId":8,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"db593805-2c13-49ac-9fdc-08a0ee352c86","HttpRequestNumber":49,"HttpSessionId":"fbc52de6-ae31-e99b-cc52-ffecd26f3d6a"}
{"@t":"2023-12-11T16:50:53.5982544Z","@mt":"Document {ContentName} (id={ContentId}) has been published.","ContentName":"ContentB","ContentId":1217,"SourceContext":"Umbraco.Cms.Core.Services.ContentService","ActionId":"a6ff5e15-498f-4349-b409-579a99c654cb","ActionName":"uSync.BackOffice.Controllers.uSyncDashboardApiController.ImportHandler (uSync.BackOffice)","RequestId":"0HMVQCSFQ3LOV:00000117","RequestPath":"/umbraco/backoffice/usync/usyncdashboardapi/ImportHandler","ConnectionId":"0HMVQCSFQ3LOV","ProcessId":9604,"ProcessName":"UmbracoMultisite","ThreadId":8,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"db593805-2c13-49ac-9fdc-08a0ee352c86","HttpRequestNumber":49,"HttpSessionId":"fbc52de6-ae31-e99b-cc52-ffecd26f3d6a"}
{"@t":"2023-12-11T16:50:53.9799264Z","@mt":"{0} doesn't have a ValueEditor that implements IDataValueReference","0":"Umbraco.TextBox","SourceContext":"Umbraco.Cms.Infrastructure.Templates.HtmlMacroParameterParser","ActionId":"a6ff5e15-498f-4349-b409-579a99c654cb","ActionName":"uSync.BackOffice.Controllers.uSyncDashboardApiController.ImportHandler (uSync.BackOffice)","RequestId":"0HMVQCSFQ3LOV:00000117","RequestPath":"/umbraco/backoffice/usync/usyncdashboardapi/ImportHandler","ConnectionId":"0HMVQCSFQ3LOV","ProcessId":9604,"ProcessName":"UmbracoMultisite","ThreadId":8,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"db593805-2c13-49ac-9fdc-08a0ee352c86","HttpRequestNumber":49,"HttpSessionId":"fbc52de6-ae31-e99b-cc52-ffecd26f3d6a"}
{"@t":"2023-12-11T16:50:53.9799867Z","@mt":"{0} doesn't have a ValueEditor that implements IDataValueReference","0":"Umbraco.TextArea","SourceContext":"Umbraco.Cms.Infrastructure.Templates.HtmlMacroParameterParser","ActionId":"a6ff5e15-498f-4349-b409-579a99c654cb","ActionName":"uSync.BackOffice.Controllers.uSyncDashboardApiController.ImportHandler (uSync.BackOffice)","RequestId":"0HMVQCSFQ3LOV:00000117","RequestPath":"/umbraco/backoffice/usync/usyncdashboardapi/ImportHandler","ConnectionId":"0HMVQCSFQ3LOV","ProcessId":9604,"ProcessName":"UmbracoMultisite","ThreadId":8,"ApplicationId":"c2a37f54d004fb6a50e1c26bfe024989b2fb5035","MachineName":"Machine","Log4NetLevel":"INFO ","HttpRequestId":"db593805-2c13-49ac-9fdc-08a0ee352c86","HttpRequestNumber":49,"HttpSessionId":"fbc52de6-ae31-e99b-cc52-ffecd26f3d6a"}

The {0} doesn't have a ValueEditor that implements IDataValueReference occurs in multiple instances for every content node in the site