Upgrade and modules

19 Feb 2015, last update: 24 Jun 2017

Upgrade Sitecore experience with modules

Of course you would like to upgrade / migrate to the latest Sitecore version. Upgrading is usually possible almost all code runs well in later versions except Analytics. Analytics rules are not a problem, but, for example, code that makes use of Tracker.CurrentVisit will not compile in Sitecore 7.5 and later sometimes it is sufficient to rename the API call. For example to Tracker.Current. Also big changes in Search and in The User Interface XAML / Sheer UI is replaced by SPEAK UI

In This article I tell my experience and how to solve issues with Modules.

If you do an upgrade to multiple versions higher. You do not want to do all those steps on all your machines. An options is to start with a clean installation. An only do all the upgrade steps on 1 production database copy. It is also possible to package al your content, don’t forget all the goals, WFFM forms, Url aliases and be sure you know your custom changes Core DB adjustments (Rich Text Profiles, e.t.c) (serialize item ,  set up a good development process see Sitecore Development and Deployment setup ) and as last but certainly deserve attention the users and user rols.

Export Sitecore Users and passwords

To copy passwords see this Transferring user passwords between Sitecore instances

Another option is to copy the SQL Membership tables.

See Easiest way to copy users from one Sitecore instance to another.

Incompatible Modules

Some Modules won’t work on later Sitecore versions. For Example the Advanced Publish Dialog Module is broking in Sitecore 7.2 and higher. (Sitecore 7.2 contains a lot of publish improvements.)

Remove incompatible modules / uninstall Packages.

Sometimes it is enough to remove the config files from the module.  In Case of The Advance publish module you want also remove the dll’s and the Dialogs. To Exactly Know what a modules has install. Open the module with a Unzip tool. Now you can see the files and the items that are in the module.

See Sitecore Knowledge base Uninstalling Sitecore packages

Other options to uninstall packages.

Create an anti package with Sitecore Rocks. But this must be done before installing the package. 28 Days of Sitecore Rocks: Package Management - Part 1

Use the Package History module from the Sitecore Marketplace, currently it is not working on Sitecore 7.5 and higher. You can uninstall your installed package/module (Using original Package file)

Webforms For Marketers (WFFM)

If you using WFFM You also need to upgrade WFFM.  With an upgrade that I've done recently I had some issues. Upgrading from Sitecore 6.5 to 7.5 with Web Forms for Marketers module 2.3.0 rev.130118 First I upgrade to Sitecore to 7.5 and I discover the Publish was broken and I could rebuild the link index on master database. And the CMS search also broken.

The Publish error:

Exception: System.FormatException
Message: Unrecognized Guid format.
Source: mscorlib
   at System.Guid.GuidResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument, String failureArgumentName, Exception innerException)
   at System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult& result)
   at System.Guid..ctor(String g)
   at Sitecore.Analytics.Data.TrackingField.<>c__DisplayClass21.<get_Events>b__20(XElement e)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at Sitecore.Analytics.Data.TrackingField.ValidateLinks(LinksValidationResult result)
   at Sitecore.Links.ItemLinks.AddLinks(Field field, List`1 links, ItemLinkState linkState)
   at Sitecore.Links.ItemLinks.GetLinks(ItemLinkState linkState, Boolean allVersions, Boolean includeStandardValuesLinks)
   at Sitecore.Links.LinkDatabase.UpdateItemVersionReferences(Item item)
   at Sitecore.Events.Event.EventSubscribers.RaiseEvent(String eventName, Object[] parameters, EventResult result)
   at Sitecore.Events.Event.RaiseEvent(String eventName, Object[] parameters)
   at Sitecore.Events.Event.RaiseItemSaved(Object sender, ItemSavedEventArgs args)
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Sitecore.Data.Engines.EngineCommand`2.RaiseEvent[TArgs](EventHandler`1 handlers, Func`2 argsCreator)
   at Sitecore.Data.Engines.EngineCommand`2.Execute()
   at Sitecore.Data.Engines.DataEngine.SaveItem(Item item)
   at Sitecore.Data.Managers.ItemProvider.SaveItem(Item item)
   at Sitecore.Data.Items.ItemEditing.AcceptChanges(Boolean updateStatistics, Boolean silent)
   at Sitecore.Data.Items.EditContext.Dispose()
   at Sitecore.Publishing.PublishHelper.CopyToTarget(Item sourceVersion)
   at Sitecore.Publishing.PublishHelper.PublishVersionToTarget(Item sourceVersion, Item targetItem, Boolean targetCreated)
   at Sitecore.Publishing.Pipelines.PublishItem.PerformAction.ExecuteAction(PublishItemContext context)
   at Sitecore.Publishing.Pipelines.PublishItem.PerformAction.Process(PublishItemContext context)
   at (Object , Object[] )
   at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
   at Sitecore.Publishing.Pipelines.PublishItem.PublishItemPipeline.Run(PublishItemContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessEntries(IEnumerable`1 entries, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessEntries(IEnumerable`1 entries, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessEntries(IEnumerable`1 entries, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessEntries(IEnumerable`1 entries, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessEntries(IEnumerable`1 entries, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.ProcessEntries(IEnumerable`1 entries, PublishContext context)
   at Sitecore.Publishing.Pipelines.Publish.ProcessQueue.Process(PublishContext context)

I start the Sql server Profiler, create a filter to capture the Web database. And press pause when the error occur. Now I had the latest publish action: try to search the item. Search is broking. I do the search on the old 6.5 version. And found a WFFM forms item.

sql server profiler find publish issue

This item has a broken link icon. (Tip: Press right mouse button on the left white space in the content editor to choice with icons you want to see)

wffm broken

First I try to upgrade the WFFM module to fix this broken links but that fails with a "Unrecognized Guid format." error

Install wffm unrecognized guid format.PNG

I found out that most Form items has an invalid Event on the Tracking Field (Submit Success Event). To fix push attributes and save, or select "Submit success" as an alternative. Some items also contain invalid goals. Fix. And check that the broken link error is gone. Now everything is working.

WFFM and language

WFFM is only available in a few languages, on SDN I can’t found language packs for WFFM 2.5? Basically for validation messages and similar make sure the correct language items are back.

Upgrading WFFM

Formerly WFFM use its own database, in recent versions like 2.5 the default storage location is the analytics reporting Microsoft SQL Server database. you need to run a SQL script. WFFM_Analytics.sql located inside the package, Web Forms for Marketers 2.5 rev. 150209.zip. If you do not run that script on the analytics report database. Because you don't read the documentation you get the following error.

Server Error in '/' Application.
Invalid object name 'dbo.Fact_FormSummary'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Invalid object name 'dbo.Fact_FormSummary'.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[SqlException (0x80131904): Invalid object name 'dbo.Fact_FormSummary'.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +388
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +815
   System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4515
   System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +69
   System.Data.SqlClient.SqlDataReader.get_MetaData() +134
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +6553981
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) +6556619
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +586
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +104
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +288
   System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +171
   System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() +17
   Sitecore.Data.DataProviders.Sql.DataProviderCommand.ExecuteReader() +163

[DataException: Error executing SQL command: 
SELECT
  [Dimension].[FieldValue],
  [Fact].[Count]
FROM
  [dbo].[Fact_FormSummary] AS [Fact]
INNER JOIN
  [dbo].[FormFieldValues] AS [Dimension]
ON
  [Fact].[FieldValueId] = [Dimension].[FieldValueId]
WHERE
  [Fact].[FieldId]=@fieldId]

[Exception: Invalid object name 'dbo.Fact_FormSummary'.]
   Sitecore.Data.DataProviders.Sql.DataProviderCommand.ExecuteReader() +350
   Sitecore.Data.DataProviders.Sql.<>c__DisplayClass12.<CreateReader>b__10() +115
   Sitecore.Data.DataProviders.Retryer.Execute(Func`1 action, Action recover) +867
   Sitecore.Data.DataProviders.Sql.SqlDataApi.CreateReader(String sql, Object[] parameters) +258
   Sitecore.Analytics.Reporting.SqlReportDataSource.GetData(ReportDataQuery query) +627
   Sitecore.Analytics.Reporting.ReportDataProvider.ExecuteQueryWithCache(ReportDataQuery query, ReportDataSource dataSource, CachingPolicy cachingPolicy) +179
   Sitecore.Analytics.Reporting.ReportDataProvider.GetData(String dataSourceName, ReportDataQuery query, CachingPolicy cachingPolicy) +375
   Sitecore.Forms.Shell.UI.FormDataViewerPage.LoadSummary() +526
   Sitecore.Forms.Shell.UI.FormDataViewerPage.SummaryRender() +43
   Sitecore.Forms.Shell.UI.FormDataViewerPage.OnLoad(EventArgs e) +270
   System.Web.UI.Control.LoadRecursive() +71
   System.Web.UI.Control.LoadRecursive() +190
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3178

Also some files are depricated in my case the /Layout/systeem/VisitorIdentificationExtension.ascx give a build error on the build server. This file can safely remove it is not in WFFM 2.5.

 

General Upgrade Issue

I'm using web.config transformation in the build and forgot to update the targetFramework <compilation .... targetFramework="4.5"> and got this error.

Server Error in '/' Application.
Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: The base class includes the field 'StartPage', but its type (System.Web.UI.HtmlControls.HtmlIframe) is not compatible with the type of control (System.Web.UI.HtmlControls.HtmlGenericControl).

Source Error:


Line 47:             </div>
Line 48:             <div id="SDN">
Line 49:                 <iframe id="StartPage" runat="server" allowtransparency="true" frameborder="0" scrolling="auto"
Line 50:                     marginheight="0" marginwidth="0" style="display: none"></iframe>
Line 51:             </div>


Source File: /sitecore/login/default.aspx    Line: 49

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34212

Related links

An Sitecore Scripted Upgrade With this script you can do a scripted upgrade, the deliverable is a converted master and core database with the latest content.

Sitecore Compatibility Table

https://varunvns.wordpress.com/2014/11/11/sitecore-version-upgrade-whitepaper/

Simular WFFM issue My Upgrade Experience from Sitecore 7.5 to 8.0 Update-1

Error, Could not resolve type name WFFM 8.0 rev. 150224 update package installation Issue

The targetFramework error sitecore-upgrade-to-7-5-system-web-ui-htmlcontrols-htmliframe-is-not-compatible-with-the-type-of-control-system-web-ui-htmlcontrols-htmlgenericcontrol

Issues in Sitecore 8 update 1 why-not-to-upgrade-to-sitecore-80

Sitecore 8: Should You Upgrade?

Could not load file or assembly 'Telerik.Web.UI' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x8013140)  issue with different Telerik library with a upgrade from Sitecore 7.5 initial to update-2.

A different road to Sitecore 8 Upgrade

A different road to Sitecore 8 Upgrade – Part 2