Updating of Sitecore from 6.2 to 6.5 version

In this topic I’m going to talk about my experience of updating of Sitecore from Sitecore.NET 6.2.0 (rev. 100701) to Sitecore.NET 6.5.0 (rev. 121009). First of all I want to say that it’s not so fast process as you maybe expected. In my case I thought that it will be like next: 

1) Download one veeeery big file

2) Upload this file to the Sitecore and press big “Agree” button.

3) And of course check all functionality

Of course it was not so. So what we should to do for updating such beautiful system as Sitecore. Let’s get started. It would be great if you already had a certified account, because with simple account you won’t be able to find useful info, for simple account many pages are hidden. I began from Sitecore CMS 6.2.0 Update rev.100831 (also known as 6.2.0 Update-4), it’s a first step I started from, at that moment I had 6.5.0 (rev. 121009). As we can see, I have to apply 22 packages from 6.2.0 (rev. 100701) to 6.5.0 (rev. 121009), and as it described in steps I have to make changes in the different config files. But of course it’s still not all. I faced different errors and exceptions which not described in update steps. I’ll show only a couple of them. Thus update was related with problems and with additionally configurations of IIS server and so on. Also want to say that if you had installed modules like WFFM (Web Forms for Marketers) or MailingList or Calendar etc., you also have to install updates for all of these modules if it need. For example in my case I updated next modules:

1) WFFM (Web Forms for Marketers) (12 packages) 

All packages with updates you should uploading from this page: https://your_domain/sitecore/admin/UpdateInstallationWizard.aspx, except of some packages which you will be upload from admin part through “Package designer”.

And please notice that before each update you MUST make backup of your site with all of your DBs. Otherwise, you can make something wrong and will be have a big troubles.

At the Sitecore CMS 6.5.0 and DMS 2.0.0 rev.110602 (6.5 Initial Release) step I had much more fun, it was bottleneck. This step you should perform much more carefully than others. You’ll need to create new Analytics database (if you have current database of course) and using AnalyticsUpgradeTool for moving all needed data from old database to the new one.

Finally you should get next result:

AnalyticsUpgradeTool

A couple of issues I faced:
1) Could not load type ‘Sitecore.Web.RewriteModule’ from assembly ‘Sitecore.Kernel’.

Exception Details: System.TypeLoadException: Could not load type ‘Sitecore.Web.RewriteModule’ from assembly ‘Sitecore.Kernel’.

And after when I took a look through Reflector in Sitecore.Kernel.dll I could not find RewriteModule type, and after ticked on the sitecore support, they fixed update package.

2)There is no custom index on the database web

And I know, you may say “I should rebuild search index”, but if you open Control Panel -> Databases  -> Rebuild the Search index and here might be only “Rebuild quick search index”,

Rebuild search index

so how you can rebuild search indexes for web databases? Most likely that on the site implemented custom search like “Lucene search” and when you were changing web.config file you could affect next strings:

  <indexes hint=list:AddIndex>

    <index path=indexes/index[@id=’custom’] />

  </indexes>

from this section

<!– web –>

<database id=web” singleInstance=true” type=Sitecore.Data.Database, Sitecore.Kernel>

  <param desc=name>$(id)</param>

  <icon>Network/16×16/earth.png</icon>

  <securityEnabled>true</securityEnabled>

  <dataProviders hint=list:AddDataProvider>

    <dataProvider ref=dataProviders/main” param1=$(id)>

      <disableGroup>publishing</disableGroup>

      <prefetch hint=raw:AddPrefetch>

        <sc.include file=/App_Config/Prefetch/Common.config />

        <sc.include file=/App_Config/Prefetch/Web.config />

      </prefetch>

    </dataProvider>

  </dataProviders>

  <proxiesEnabled>false</proxiesEnabled>

  <proxyDataProvider ref=proxyDataProviders/main” param1=$(id) />

  <indexes hint=list:AddIndex>

    <index path=indexes/index[@id=’custom’] />

  </indexes>

  <archives hint=raw:AddArchive>

    <archive name=archive />

    <archive name=recyclebin />

  </archives>

  <cacheSizes hint=setting>

    <data>20MB</data>

    <items>10MB</items>

    <paths>500KB</paths>

    <itempaths>10MB</itempaths>

    <standardValues>500KB</standardValues>

  </cacheSizes>

</database>

And Web database must appear in the Index Rebuild dialog after that. Good documentation how to configure Lucene Search Engine herePlease note that this index API was deprecated (deprecated and removed features), read here.

 

3) Design of WFFM was damaged

I have many forms which were built by WFFM (Web Forms for Marketers), and design of these forms was damaged after update. So, what happened? According to the Sitecore Web Forms for Marketers V2.3 Reference (section 3.12),all the custom styles should be specified in the [website]\sitecore modules\Shell\Web Forms for Marketers\Themes\Custom.css file. So you may modify this file and change the appearance of the form. In my case, I’ve changed Default.css and as result, updating  replaced old Default.css by new one.

4) StartIndex cannot be larger than length of string.
Parameter name: startIndex

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.ArgumentOutOfRangeException: startIndex cannot be larger than length of string. Parameter name: startIndex

So, is actually the module bug, if sitecore guys do not fixed it already, you have a little troubles on the each WFFM form where you use Checkbox List.

The issue you’ve faced is related to combination of two factors:

a) ‘Required’ checkbox

b) empty <SelectedValue> tag in Checkbox List’s ‘Parameters’ field.

You can try the following workaround:
1. Place Sitecore.Support.362611.dll file in your ‘bin\’ folder.
2. Add the line in bold to your web.config:

<event name=item:saving>

  <handler type=Sitecore.Tasks.ItemEventHandler, Sitecore.Kernel” method=OnItemSaving />

  <handler type=Sitecore.Support.Forms.WffmItemSaving, Sitecore.Support.362611” method=OnItemSaving />

</event> 

Please note that the workaround prevents the empty “<SelectedValue></SelectedValue>” section from appearing, but doesn’t remove it from the already existing fields. Note that this workaround was not deeply tested and sitecore support recommend to backup your solution before applying any changes.

I did all these things and recreated my checkbox list.

 

5) A required license is missing.
You may also wonder about missing license after one of steps of updates.

A required license is missing

I do not know cause of why license file has disappeared, but you can fix it simply, just upload webdav.lic and license.xml files to the proper folders.

Sitecore license file

 

NOTE: After that you have to clear your browser’s cache.
6) Could not load file or assembly ‘Telerik.Web.UI’ or one of its dependencies.
Сould 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: 0x80131040). 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.IO.FileLoadException: 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: 0x80131040)

As it described on the sitecore snd:

Important: The Telerik.Web.UI.dll 3rd party DLL has been updated to newer versions in CMS 6.4. You might have to update and recompile your code if you are referencing this DLL from your code. Also, CMS 6.4 itself contains a small number of breaking API changes that could require you to change and recompile your code if you are using these specific parts of the API.

But I want to add a bit more, you also have to check version of Telerik.Web.UI.dll and update  newVersion attribute in the web.config if it needed

<runtime>

  <assemblyBinding xmlns=urn:schemas-microsoft-com:asm.v1appliesTo=v2.0.50727>

    <dependentAssembly>

      <assemblyIdentity name= Telerik.Web.UIpublicKeyToken=121fae78165ba3d4culture=neutral />

      <bindingRedirect oldVersion=0.0.0.0-2010.3.1317.35newVersion=2010.3.1317.35 />

    </dependentAssembly>

  </assemblyBinding>

</runtime>

 

7)Form Designer” or “Form Report” buttons of WFFM module ribbon opens an empty window.

Sitecore ribbon

You should just clear browser cache
8)Changes in the forms.config
If you are trying to update Web Forms for Marketers Module and faced message like this:
After update has been applied you should make next changes and replace:

<processor
type=”Sitecore.Form.Core.Pipeline.InsertRenderings.Processors.GetDialogUrl, Sitecore.Forms.Core”/>

to:

<processor
type=”Sitecore.Form.Core.Pipeline.InsertRenderings.Processors.GetDialogUrl, Sitecore.Forms.Core”
patch:before=”processor[@type=’Sitecore.Pipelines.GetRenderingDatasource.CheckDialogState, Sitecore.Kernel’]”/>

so, if you did not find current processor, you may just introduce the new processor definition. Place the <getRenderingDatasource /> node inside the <pipelines /> one:

<configuration>

  <sitecore>

    <pipelines>

      <getRenderingDatasource>

        <processor type=Sitecore.Form.Core.Pipeline.InsertRenderings.Processors.GetDialogUrl, Sitecore.Forms.Core

                   patch:before=processor[@type=’Sitecore.Pipelines.GetRenderingDatasource.CheckDialogState, Sitecore.Kernel’]/>

      </getRenderingDatasource>

    </pipelines>

  </sitecore>

</configuration>

 

9) All Web Forms for Marketers forms does not submit.
I got very strange behaviour with WFFM forms after full update of website. When form has been submitted, I got next message (it’s only in my case as it message is custom):
—————————————————————————-
We experienced a technical difficulty while processing your request. Your data may not have been correctly saved.
——————————————————————————
what more strange, that all data were sent, and I got email from this form. For fixing you should ensure that the Save Actions and Form Verification are located under the proper item.

Web Forms for Marketers Module

and Tag Action and Register a Goal should be under System Action

Web Forms for Marketers Module Tag Action

 

in my case was next problem, on the left image is proper structure and on the right – wrong hierarchy which I had.

 

WFFM

 

NOTE: The WFFM module gets the “System Actions” item and treats all it’s children as the action items. The Save Actions and Form Verification folders weren’t the action items, so the error was thrown.

So, I just moved Tag Action and Register a Goal to the proper place and have deleted Form Verification folder.

10) Folder name is not allowed  – sitecore\shell\override.
Just create this folder and that’s it :)