Views: | 13188 |
Number of votes: | 2 |
Average rating: |
This article describes an example of how to upgrade a Create+ site from version 1.1 to 2.0. The Create+ package contains a number of products integrated with EPiServer CMS, and the upgrading sequence as well as the steps to upgrade each product are described.
Create+ is a commercial package for EPiServer CMS, with a set of products allowing for editors to work with all aspects of creating dynamic websites, including page layouts, newsletter send-outs and image management and flash content. The Create+ package contains the products EPiServer Mail, EPiServer Composer, EPiTrace (Live Monitor), ImageVault and Interactive Scene.
Product version overview for Create+
Product | Create 1.1 | Create 1.2 | Create 2.0 |
---|---|---|---|
EPiServer CMS | 5 R2 SP1 | 5 R2 SP2 | 6.0 |
EPiServer Mail | 4.4 | 4.4.SP1 | 5.0 |
EPiServer Composer | 3.2.5 | 3.2.6 | 4.0 |
EPiTrace/Live Monitor | 1.3 | 1.3 | 2.0 |
ImageVault | 3.2.2 | 3.3.3 | 3.4 (32/64 bit) |
Interactive Scene | 1.3.1 | 1.3.2 | 1.3.2 |
The website in this example is running in the following environment:
The upgrading procedure described here is divided into two parts:
The various steps are described in detail in the following.
In this step, EPiServer CMS, EPiServer Composer, EPiServer Mail, ImageVault and Interactive Scene will be upgraded. EPiTrace will be removed and replaced by Live Monitor, which is EPiTrace based on Silverlight, which is optionally included as part of CMS 6.
The starting point scenario here is a site with CMS 5 R2 SP 1 with public and demo templates installed, and with the modules that are part of the Create+ 1.1 package (EPiServer Composer, EPiServer Mail, ImageVault, Interactive Scene and EPiTrace). The site has previously been upgraded from Create+ 1.0, see instructions for upgrading Create+ from 1.0 to 1.1.
Before upgrading I did the following:
I started by removing EPiTrace, then I upgraded EPiServer CMS and then the modules. Finally I tested everything to ensure there were no errors.
I chose to start by removing EPiTrace completely before I started the upgrade itself. EPiTrace is replaced by Live Monitor in EPiServer CMS 6, so I won’t need it anymore. I believe it’s good to remove it early in the upgrading process to avoid errors later.
Remove:
Remove the following in web.config:
<system.web><httpModules><add name="KeepIdForEPiTrace" type="EPiTrace.KeepIdForDataHandler,EPiTrace" />
<system.webServer><modules><add name="KeepIdForEPiTrace" type="EPiTrace.KeepIdForDataHandler,EPiTrace" preCondition="managedHandler" />
<dependentAssembly>
<assemblyIdentity name="EPiTrace" publicKeyToken="" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-1.65535.65535.65535" newVersion="1.21.0.0" />
</dependentAssembly>
Please refer to the installation instructions for EPiServer CMS 5 R2 SP2 for information on how to upgrade.
After the upgrade you most certainly will get the warning: "This page is not available for the active language". This is a known EPiServer CMS bug (#26280) and the solution is to apply a hotfix from EPiServer Support or to upgrade to CMS 6. I didn't apply the hotfix because I'm going to upgrade to CMS 6 and the bug is fixed there.
Please refer to the tech note Upgrading EPiServer Composer from 3.2.5 to 3.2.6
"Could not load file or assembly 'Dropit.Extension' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)..." etc. To solve it, in web.config you'll need to change 'newVersion' references to Dropit.Extension and Dropit.Extension.UI:
<dependentAssembly>
<assemblyIdentity name="Dropit.Extension" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
<bindingRedirect oldVersion="3.2.5.115" newVersion="3.2.6.326" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Dropit.Extension.UI" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
<bindingRedirect oldVersion="3.2.5.115" newVersion="3.2.6.326" />
</dependentAssembly>
"Invalid type for property 'ContainerPageProperty" on page 2672. Expected Dropit.Extension.SpecializedProperties.ContainerPageProperty."
Solution: In Admin mode, go to Page Type/Page Type [ExtensionSys] Extension Container/ContainerPageProperty and change 'Type' from 'Extension Container Page Property' to 'ExtensionContainerProperty'.
"Parser Error: The type 'DropIT.Modulwebb.WebUI.Functions.YouTube.YouTubeLinkBlock" is ambiguous: it could come from assembly 'C:\~\SiteRoot\bin\EPiServer.Templates.Public.DLL' or from assembly 'C:\~\ SiteRoot \bin\EPiServer.ComposerSampleTemplates.DLL'. Please specify the assembly explicitly in the type name."
A solution is to change namespace in one of the YouTubeLinkBlock.ascx and .cs files.
Done by installing EPiServer Mail version 4.4 SP1. Please refer to the download of EPiServer Mail 4.4 SP1
EPiServer CMS and EPiServer Mail share the same database, so upgrading is straigth forward and no errors were detected here.
Upgrading is done through installing the new version. Please refer to the Installation Manual for Image Vault 3.3.3. No errors were detected in this process.
The upgrading is done by installing the new version Interactive Scene 1.3.2. Please refer to the Installation Instructions for Interactive Scene 1.3.2.
You may receice the following error message after upgrade:
"Could not load file or assembly 'Obg.InteractiveScene.CMS5, Version=1.3.100.23456, Culture=neutral, PublicKeyToken=d7fb29bd262c7c82' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)."
The solution is to add the missing assembly Obg.InteractiveScene.CMS5 to your project and compile. I also found three other missing assemblies that I included at the same time in the project: Dropit.Extension.dll, ImageStoreNET.dll and ImageVaultOfficeData.dll.
This is the second part of the Create+ upgrade. In this procedure, EPiServer CMS, EPiServer Composer, EPiServer Mail and ImageVault will be upgraded. For Interactive Scene, the same version (1.3.2) is used in both Create+ 1.2 and 2.0. EPiTrace was removed in the previous steps, and Live Monitor will be installed instead.
The starting point now is a site with EPiServer CMS 5 R2 SP2 with public and demo templates installed, and with all the modules that are included in the Create+ 1.2 package (see Introduction above).
Before this part of the upgrading I did the following:
I started by upgrading EPiServer CMS, continued by installing LiveMonitor, and then I upgraded EPiServer Composer, ImageVault and EPiServer Mail, in that order. Finally I tested the site to ensure there were no errors.
Refere to the upgrading instructions in the Installation Instructions for EPiServer CMS 6.0.
I didn't install the new public or demo templates since I chose to use the templates that already existed on the website.
<register type="EPiServer.SpecializedProperties.PropertyXhtmlString, EPiServer"mappedType="EPiServer.Web.PropertyControls.LegacyProperty
XhtmlStringControl, EPiServer" />
<register type="EPiServer.Core.PropertyLongString, EPiServer" mappedType= "EPiServer.Web.PropertyControls.LegacyPropertyXhtmlStringControl, EPiServer" />
Live Monitor is an optional part of EPiServer CMS 6. To install, please refer to the Installation Instructions for Live Monitor. In this case there were no issues installing Live Monitor, but configuration might be needed in some cases for the module to work properly, see the installation instructions for more information.
For upgrading details, please refer to the tech note Upgrading EPiServer Composer from 3.2.6 to 4.0
<httpHandlers>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" />
<virtualPathMappings>
<add url="~/UI/CMS/edit/newpage.aspx" mappedUrl="~/Dropit/Plugin/Extension/UI/Edit/ExtensionNewPage.aspx" />
<add url="~/UI/CMS/admin/editpagetypebase.aspx" mappedUrl= "~/dropit/plugin/extension/ui/admin/extensioneditpagetype.aspx" />
To upgrade ImageVault, please refer to the Installation Manual for ImageVault 3.4 (32 bit).
<httpModules>...
<add name="ImageVault" type="ImageStoreNET.PluginStartup, ImageVault.EPiServer5" />
<dependentAssembly>
<assemblyIdentity name="ImageVault.Core" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.3.700" newVersion="3.3.3.700" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ImageVault.EPiServer5" publicKeyToken="" culture="neutral" />
<bindingRedirect oldVersion="3.0.0.0-3.65535.65535.65535" newVersion="3.3.3.700" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ImageVaultDemoTemplates" publicKeyToken="" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-1.65535.65535.65535" newVersion="1.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ImageVaultOfficeData" publicKeyToken="" culture="neutral" />
<bindingRedirect oldVersion="3.0.0.0-3.65535.65535.65535" newVersion="3.3.3.700" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ImageStoreNET" publicKeyToken="" culture="neutral" />
<bindingRedirect oldVersion="3.0.0.0-3.65535.65535.65535" newVersion="3.3.3.700" />
</dependentAssembly>
<httpModules>...
<add name="ImageVault" type="ImageStoreNET.PluginStartup, ImageVault.EPiServer5" />
<system.webServer>
<modules>...
<add name="ImageVault" type="ImageStoreNET.PluginStartup, ImageVault.EPiServer5" />
<httpHandlers>...
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
using System;
using EPiServer;
using ImageVault.EPiServer6; //instead of ImageVault.EPiServer5;
using ImageStoreNET.Developer;
using ImageStoreNET.Developer.Core;
using ImageStoreNET.Developer.WebControls;
<%@ Register TagPrefix="ImageVault" Namespace="ImageStoreNET.Developer.WebControls" Assembly="ImageVault.Episerver5" %>
to: <%@ Register TagPrefix="ImageVault" Namespace="ImageStoreNET.Developer.WebControls" Assembly="ImageVault.Episerver6" %>
I used the instructions from upgrading Create from 1.0 to 1.1 (EPiServer Mail section), but with some modifications. As mentioned previously, EPiServer CMS and Mail share the same database. Before the upgrade, I saved a copy of EPiSeverMail.config, which I later used to replace the new EPiServerMail.config when the upgrade was done.
Files
Remove the folder EPiServer Mail from the site root. From the bin folder remove all assemblies containing common and mail.
Database
Download the database migration package for EPiServer Mail and Community, which contains the two scripts that will be used; Drop Relate tables.sql and migration_tool.sql.
Copy the Mail database (db1) to a new database (db2). In db1 delete all tables and stored procedures containing the name Common and Mail using the script Drop Relate tables.sql.
Install EPiServer Mail from the EPiServer Deployment Center. Select db1 as the database (the new database tables will be placed there). I didn't select the Community Integration option (as this is not an EPiServer Community upgrade).
Use the migration_tool.sql to migrate data from db2 to db1. Set the global variables in the script before running it:
yes = 1, no = 0:
SET @strSourceDB = '[db2]' - the source database
SET @strTargetDB = '[db1]' - the target database
SET @bitMigrateCommunity = 0 - I'm not migrating Community
SET @bitMigrateMail = 1 - I'm migrating Mail
SET @bitDebug = 1 - to be able to see debug info
SET @bitRestoreRelatePlusData = 0 - I'm not migrating Relate+
You’ll find information about the migration in the tech note Migrating EPiServer Community and EPiserver Mail (see Migrating the Database).
Web.config / EPiServerMail.config
There are some manual changes that needs to be done. Also make sure you have the correct settings here.
<dependentAssembly>
<assemblyIdentity name="EPiServer.Common.Replication" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
<bindingRedirect oldVersion="2.0.0.0-2.65535.65535.65535" newVersion="2.3.517.36" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EPiServer.Common.Security.Internal" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
<bindingRedirect oldVersion="2.0.0.0-2.65535.65535.65535" newVersion="2.3.517.36" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EPiServer.Common.Services.Replication.Shared" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
<bindingRedirect oldVersion="2.0.0.0-2.65535.65535.65535" newVersion="2.3.517.36" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EPiServer.Common.Services.Replication.Subscriber" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
<bindingRedirect oldVersion="2.0.0.0-2.65535.65535.65535" newVersion="2.3.517.36" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EPiServer.Wsrp" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
<bindingRedirect oldVersion="5.0.0.0-5.65535.65535.65535" newVersion="5.2.375.236" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="EPiServer.Mail.Install" publicKeyToken="8fe83dea738b45b7" culture="neutral" />
<bindingRedirect oldVersion="4.0.0.0-4.65535.65535.65535" newVersion="4.4.343.20" />
</dependentAssembly>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<mapping assembly="EPiServer.Common.Framework.Impl" />
</session-factory>
</hibernate-configuration>
<siteHosts>
<add name="Default" hostUrl="*" connectionStringName="EPiServerCommon" />
</siteHosts>
<episerver.common><sites><site connectionStringName>
<episerver.common><sites><site siteId>:
<site siteId="*" connectionStringName="EPiServerCommon">
<security defaultProvider="CleartextPasswordProvider" anonymousGroupId="2">
<passwordProviders>
<add name="CleartextPasswordProvider" type="EPiServer.Common. Security.CleartextPasswordProvider, EPiServer.Common.Security" />
<add name="HMACMD5PasswordProvider" type="EPiServer.Common. Security.HMACMD5PasswordProvider, EPiServer.Common.Security" />
<add name="HMACPasswordProvider" type="EPiServer.Common. Security.HMACPasswordProvider, EPiServer.Common.Security" />
<add name="HMACSHA256PasswordProvider" type="EPiServer.Common. Security.HMACSHA256PasswordProvider, EPiServer.Common.Security"/>
</passwordProviders>
<replication>
<subscriber serverName="myWebServer1" siteName="mySite" port="0" alternatePort="0" broadcastAddress="192.168.0.255" />
</replication>
<session sessionTimeout="00:20:00" timeoutCheckInterval="00:01:00" />
<rolesToSynchronize>
<add name="*" />
</rolesToSynchronize>
<rolesToTransfer>
<add name="*" />
</rolesToTransfer>
<syndication viewModeUriProviderName="RelatePlusProvider" resourceUriProviderName="resources" feedUriProviderName= "RelatePlusFeedUriProvider" />
<uri defaultProvider="null"><providers><add name="null" type="EPiServer.Common.Uri.UriProviderHandler+NullUriProvider, EPiServer.Common.Framework.Impl" /></providers></uri>
<eventCounter active="true">
<events>
<add action="Add" name="UserAdded" groupName="User" type="EPiServer.Common.Security.SecurityHandler, EPiServer.Common.Security" event="CreatedUser" instanceMethod="get_Instance" />
<add action="Remove" name="UserRemoved" groupName="User" type="EPiServer.Common.Security.SecurityHandler, EPiServer.Common.Security" event="RemovedUser" instanceMethod="get_Instance" />
</events>
</eventCounter>
<episerver.search active="false">
<namedIndexingServices defaultService="">
<services>
<!--<add name="{serviceName}" baseUri="{indexingServiceBaseUri}" accessKey="{accessKey}"/>-->
</services>
</namedIndexingServices>
<searchResultFilter defaultInclude="true">
<providers />
</searchResultFilter>
</episerver.search>
<episerver.mail><sites><site siteId="*">
Documentation for EPiServer CMS
Nice work.