After the previous step I’ve got a fresh “To-be” database to compare with my legacy Umbraco database. So, it was arrived the moment to do the hard work: schema and data comparisons…
Big breath, switch off all notification alarms (email, phone) and go!
the comparison was realized thanks to Schema and Data Compare features offered by SQL Server Data Tools (SSDT) integrated in Visual Studio 2013. I’ve set some option for the schema comparison, in order to generate a better publishing sql script.
the following is a summary of the differences founded, grouped by difficulty level (DL): 1 = simple, 5 = difficult.
Tables with modified structure (DL:5)
[cmsContentType]
[cmsContentTypeAllowedContentType]
[cmsContentVersion]
[cmsDataType]
[cmsPropertyType]
[cmsTagRelationship]
Tables removed (DL:4)
[cmsMacroPropertyType]
[cmsTab]
[umbracoApp]
[umbracoAppTree]
Tables with modified field’s names or field’s SQL types (DL:3)
[cmsMacroProperty]
[cmsTags]
[cmsTask]
[cmsTaskType]
[umbracoLanguage]
[umbracoNode]
[umbracoUser]
[umbracoUser2NodeNotify]
[umbracoUser2NodePermission]
Tables with modified indexes and other constraints (DL:2)
[cmsContent]
[cmsDocumentType]
[cmsMember2MemberGroup]
[cmsMemberType]
[cmsPreviewXml]
[umbracoUserLogins]
Tables with modified field’s collations (DL:1)
[cmsContentXml]
[cmsDataTypePreValues]
[cmsDictionary]
[cmsDocument]
[cmsLanguageText]
[cmsMacro]
[cmsMember]
[cmsPropertyData]
[cmsStylesheet]
[cmsStylesheetProperty]
[cmsTemplate]
[umbracoDomains]
[umbracoLog]
[umbracoRelation]
[umbracoRelationType]
[umbracoUser2app]
[umbracoUserLogins]
Furthermore, there were some new tables…
Upgrade Tables with modified structure
At first I faced the most difficult set of tables, because solving those could allow me to understand the global effort to complete the prototype and verify what could be closed at the end of my time-box.
Upgrade ContentType tables
There are at least three tables in this group: cmsContentType, cmsContentType2ContentType (NEW table!), cmsContentTypeAllowedContentType. Their purpose is to define the relations among Umbraco Document Types.
I’ve changed the generated script in order to:
- copy contentType records in a temporary table
- Populate new table cmsContentType2ContentType using the temp table
Upgrade PropertyType tables
There are two tables in this group: cmsPropertyType, cmsPropertyTypeGroup (NEW table!). These tables manage the relations of Document property, their relationship, their type, etc. About this topic there is another table involved: cmsTab (that groups properties in specific tabs), that was removed in the new release…
I’ve changed the generated script in order to:
- Keep cmsTab table till the end of upgrade process
- Create a first version of new cmsPropertyType, without dropping the old one, but renaming it
- Populate new cmsPropertyTypeGroup table from cmsTab
- Create and run a procedure to correctly update cmsPropertyType, cmsPropertyTypeGroup
Upgrade DataType tables
Tables like cmsDataType contain data about how (macro’s and content’s) properties are managed. Here came some big problems…Actually we have customized some functionalities for insert/edit macro properties, creating some custom back-office module. So, besides the data and the tables, we should spend a lot of time to rewrite these functionalities for the renewed Umbraco back office, developed in Angular.js. Probably it’s not just a problem about my time-box, but also about my (implicit) goals: in this moment I can’t spend too much time to allow the dev team learning Angular.js. I know that framework, it’s cool, but it’s not so easy as it seems the first days…and I’d want my dev team to spend time learning other framework that could pump the application performance, like AspNet.MVC (vs WebForms).
So…
Umbraco 7.1.8 is NOT my landing version…
This prototype is failed.
Second failure.
Comments