Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Niels Lynggaard 190 posts 548 karma points
    Jun 18, 2013 @ 13:10
    Niels Lynggaard
    0

    Upgrade procedure from 4.0.1 to 6.1.1

    Hi oh great community!

    I am planning to upgrade an old umbraco site, currently running 4.0.1 all the way to the latest version.

    What is the recommended path? I'm considering:

     - going to 4.7 and then

     - going to 4.9 (I think there's some DB changes on that one, + asp.net 4.0? )

    - possibly straight from 4.9 to 6.1.1

    I know I need to be aware of web.config changes and also some changes with countour configs.

    Anything else?

    Other recommendations?

    Cheers,

    /Niels

  • Jeavon Leopold 3072 posts 13628 karma points MVP 10x admin c-trib
    Jun 20, 2013 @ 13:35
    Jeavon Leopold
    1

    Hi Niels,

    Make sure you have a good look at the upgrade documentation here, especially the version specific section.

    The bigest step will be going from v4.0.1 to v4.5. My recommended path would be v4.0.1 > v4.5 > v4.7> v4.8 > v4.11 > v6.1

    When performing a upgrade like this I always use source control and make commits at every version and merging all config files (inc web.config) using a merge tool. I also make DB backups between each version.

    uDiff is also a very useful tool for checking on what is different between your site and the Umbraco release

    Good luck!

    Jeavon

  • Niels Lynggaard 190 posts 548 karma points
    Jun 20, 2013 @ 15:28
    Niels Lynggaard
    0

    Thanx for your valuable input. I will do the suggested path.

    I also went through the list of installed packages and looked up their compatibility so now I know where to expect trouble and what to dump and exchange for other/newer packages.

    Nice tip about uDiff :)

    I'll let you know how it goes..

  • Martin Griffiths 826 posts 1269 karma points c-trib
    Jun 20, 2013 @ 15:43
    Martin Griffiths
    2

    Hi Niels

    Jeavons is pretty much on the money to the way we upgraded, except that we also upgraded our XSLT to the new schema because later third party packages tend to be written to support it. 

    We went from 4.0.4.2 > 4.7.2 > 4.11.9. We're stuck on v4 until the team can deliver a version of Courier 2 that actually works (another story).

    Converting the XSLT was straight forward but the two known ways to do it don't pick up everything you need to change. So it's debug and fix as you find the problems.

    For us we had way too much XSLT code in our site to warrant doing a complete razor re-write, it's something we'll upgraded bit by bit over time.

    Regards

    Martin

     

  • Jeavon Leopold 3072 posts 13628 karma points MVP 10x admin c-trib
    Jun 20, 2013 @ 15:51
    Jeavon Leopold
    0

    Great point on upgrading the XSLT for the new schema, definitely worth doing it if it's not a huge job! On uninstalling packages that are not compatible or require major updating, I recommend that you uninstall before you upgrade Umbraco to the next version and then if required install the new version of the package, keeping track of any config files etc in source control.

  • Martin Griffiths 826 posts 1269 karma points c-trib
    Jun 20, 2013 @ 16:02
    Martin Griffiths
    2

    As a word of caution, if you have any v4 packages that use custom datatypes (we used TreeMultiPicker), DONT uninstall the package as this will break any properties you've setup in your doctypes and you may also lose property data which would be disastrous!

    Instead find a compatible package, in our case initially we went with uComponents - Multi Node Tree Picker. Go to your datatype and apply the switch and then uninstall the dead version. That (fingers crossed) should keep your property data intact. 

    Small note: many of the uComponents are built into later versions of Umbraco, so you can re-patch again if you want to, we did as it saves upgrading uComponents all the time.

    M.

     

  • Niels Lynggaard 190 posts 548 karma points
    Jun 20, 2013 @ 16:41
    Niels Lynggaard
    0

    We're so on the same page everybody!

    I allready thought that I'd go ahead and update the xslt to the new schema, it shouldn't be that much of work..

    We actually also use Courrier, so I'm a bit currious in relation to "a version that actually works". I was hoping to update Currier all the way to the newest version as well.

    AND The site also uses TreeMultiPicker and I also allready had the idea that I'd switch to the Ucomponents Multi Node Tree Picker, so good tip there also.

    Good stuff, guys!

  • Martin Griffiths 826 posts 1269 karma points c-trib
    Jun 20, 2013 @ 16:47
    Martin Griffiths
    0

    Hi Niels

    Ok so here's the bad news...

    Unfortunately currently, Courier 2 is unfit for purpose, check this out....

    http://our.umbraco.org/forum/umbraco-pro/courier/41759-LOBBY-THE-UMBRACO-TEAM!!!-COURIER-IS-LETTING-UMBRACO-DOWN!!

    Niels Hartvigs response is at the end of the post. If you enjoy pain go ahead and try Courier 2, some have had more luck than me and the others who have posted. But trust me i've been trying to get Courier 2 to work since version 2.1 and that was over a year ago!

    What makes it worse is Courier 1.3 is not compatible with Umbraco 4.5 and higher. You'll have to do a manual patch of the Umbraco source code and drop in the patched umbraco.dll for each and every version you upgrade to! The code is below...

    protectedvirtualvoidOnNodeActionsCreated(NodeActionsEventArgs e)
           
    {
               
    if(NodeActionsCreated!=null)
               
    {
                   
    // wrapped it around try/catch because of problem with courier and ucomponent multi node datatype
                   
    // basically causing exception.
                   
    try
                   
    {
                       
    NodeActionsCreated(this, e);
                   
    }
                   
    catch(Exception)
                   
    {}                
               
    }
           
    }

  • Martin Griffiths 826 posts 1269 karma points c-trib
    Jun 20, 2013 @ 16:52
    Martin Griffiths
    0

    One last thing, the patch doesnt work in Courier 6.

    So we're currently stuck on 4.11.9 for all projects that require a staging server.

    The ethos behind Courier 2, was to provide end-to-end deployment tools for end-users (editors) and developers. Unfortunately this means the simplicity of Courier 1.3 has been lost in a sea of over complicated releases that basically, dont work properly!

    Niels has decided to hand the project over to his Umbraco as a service team....I hope things will improve rapidly.

    Martin.

  • Jeavon Leopold 3072 posts 13628 karma points MVP 10x admin c-trib
    Jun 20, 2013 @ 16:54
    Jeavon Leopold
    0

    @Niels, FYI Multinode tree picker is included in Umbraco Core from v4.8 onwards rather than uComponents

  • Martin Griffiths 826 posts 1269 karma points c-trib
    Jun 20, 2013 @ 16:59
    Martin Griffiths
    1

    Yup thats right, install uComponents if you want to start with 4.5 or 4.7, do the upgrade, switch the datatypes over and uninstall TreeMultiPicker. Once you go 4.8 or higher use the built in treenodepicker, you can optionally uninstall uComponents if you dont need any of the other datatypes (some are very useful though).

    http://ucomponents.codeplex.com/

    Use the table to make sure you download the right version(s) for Umbraco.

  • Niels Lynggaard 190 posts 548 karma points
    Jun 26, 2013 @ 14:03
    Niels Lynggaard
    0

    Good tips everybody.

    At the moment I'm still stuck at the first update to 4.5. I had some issues with the installed packages, but that is solved now and hence I'm able to run the installer, and go all the way through.

    However, I'm left with 2 issues;

    1) Installer keeps launching when I request the site.

    2) When I'm logged in to Umbraco the backend is returning bad paths to the javascripts (paths now look like this: /umbraco/~/umbraco/)

    I'm currently suspecting that the ClientDependency stuff may be not working, since my /App_Data/ClienteDependency folder is empty and isn't re-created if I delete it..

    Clues anyone?

    Here's a look at my web.config:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    <configSections>
    <section name="urlrewritingnet" restartOnExternalChanges="true" requirePermission="false" type="UrlRewritingNet.Configuration.UrlRewriteSection, UrlRewritingNet.UrlRewriter" />
    <section name="UmbLuceneIndex" type="TheFarm.Umbraco.Lucene.Common.Configuration.IndexSets, TheFarm.Umbraco.Lucene.Common" />
    <section name="microsoft.scripting" type="Microsoft.Scripting.Hosting.Configuration.Section, Microsoft.Scripting, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" />
    <section name="clientDependency" type="ClientDependency.Core.Config.ClientDependencySection, ClientDependency.Core" />
    <section name="Examine" type="Examine.Config.ExamineSettings, Examine" />
    <section name="ExamineLuceneIndexSets" type="UmbracoExamine.Config.ExamineLuceneIndexes, UmbracoExamine" />
    </configSections>
    <urlrewritingnet configSource="config\UrlRewriting.config" />
    <UmbLuceneIndex DefaultIndexSet="TestSite" EnableDefaultActionHandler="true">
    <IndexSet SetName="TestSite" IndexPath="~/data/TestSiteLuceneIndex/" MaxResults="100">
    <!-- REQUIRED: MaxResults,IndexPath,SetName -->
    <IndexUmbracoFields>
    <add Name="id" />
    <!-- REQUIRED -->
    <add Name="nodeName" />
    <!-- REQUIRED -->
    <add Name="updateDate" />
    <add Name="writerName" />
    <add Name="path" />
    <add Name="nodeTypeAlias" />
    <!-- REQUIRED -->
    </IndexUmbracoFields>
    <!-- The User defined fields to be indexed and searched. The UmbracoIndexer has methods to override the fields to be searched. -->
    <IndexUserFields>
    <add Name="headline" />
    <add Name="content" />
    <add Name="SearchWeight" />
    <add Name="teaser" />
    <add Name="name" />
    <add Name="title" />
    <add Name="email" />
    </IndexUserFields>
    <!-- IncludeNodeTypes not required. If not specified, the indexer will index ALL document types-->
    <IncludeNodeTypes>
    <add Name="Tekstside" />
    <add Name="Forside" />
    <add Name="Nyhed" />
    <!--<add Name="WorkingAreas"/>-->
    <add Name="Medarbejder" />
    <add Name="Brochure" />
    </IncludeNodeTypes>
    <!-- ExcludeNodeTypes not required. If specified, these node types will not be indexed. -->
    <ExcludeNodeTypes>
    <!--<add Name="News Comment" />-->
    </ExcludeNodeTypes>
    </IndexSet>
    </UmbLuceneIndex>
    <microsoft.scripting configSource="config\scripting.config" />
    <clientDependency configSource="config\ClientDependency.config" />
    <Examine configSource="config\ExamineSettings.config" />
    <ExamineLuceneIndexSets configSource="config\ExamineIndex.config" />
    <appSettings file="appSettings.config">
    <add key="umbracoDbDSN" value="server=(local);database=XXXXX;user id=XXXXXX;password=XXXXXX" />
    <add key="umbracoConfigurationStatus" value="4.5.0" />
    <add key="umbracoReservedUrls" value="~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx" />
    <add key="umbracoReservedPaths" value="~/umbraco,~/install/" />
    <add key="umbracoContentXML" value="~/App_Data/umbraco.config" />
    <add key="umbracoStorageDirectory" value="~/App_Data" />
    <add key="umbracoPath" value="~/umbraco" />
    <add key="umbracoEnableStat" value="false" />
    <add key="umbracoHideTopLevelNodeFromPath" value="true" />
    <add key="umbracoEditXhtmlMode" value="true" />
    <add key="umbracoUseDirectoryUrls" value="false" />
    <add key="umbracoDebugMode" value="true" />
    <add key="umbracoTimeOutInMinutes" value="20" />
    <add key="umbracoVersionCheckPeriod" value="7" />
    <add key="umbracoDisableXsltExtensions" value="true" />
    <add key="umbracoDefaultUILanguage" value="da" />
    <add key="umbracoProfileUrl" value="profiler" />
    <add key="umbracoUseSSL" value="false" />
    <add key="umbracoUseMediumTrust" value="false" />
    <add key="umbracoContentXMLUseLocalTemp" value="false" />

    </appSettings>
    <system.net>
    <mailSettings>
    <smtp>
    <network host="massmail.scannet.dk" />
    </smtp>
    </mailSettings>
    </system.net>
    <connectionStrings>
    <remove name="LocalSqlServer" />
    <!--<add name="LocalSqlServer" connectionString="server=.\sqlexpress;database=aspnetdb;user id=DBUSER;password=DBPASSWORD" providerName="System.Data.SqlClient"/>-->
    </connectionStrings>
    <system.web>
    <!-- <trust level="Medium" originUrl=".*" />-->
    <customErrors mode="Off" />
    <trace enabled="true" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />
    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20" />
    <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
    <xhtmlConformance mode="Strict" />
    <httpRuntime requestValidationMode="2.0" />
    <pages enableEventValidation="false">
    <!-- ASPNETAJAX -->
    <controls>
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add tagPrefix="umbraco" namespace="umbraco.presentation.templateControls" assembly="umbraco" />
    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </controls>
    </pages>
    <httpModules>
    <!-- URL REWRTIER -->
    <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
    <add name="umbracoRequestModule" type="umbraco.presentation.requestModule" />
    <!-- UMBRACO -->
    <add name="viewstateMoverModule" type="umbraco.presentation.viewstateMoverModule" />
    <add name="umbracoBaseRequestModule" type="umbraco.presentation.umbracobase.requestModule" />
    <!-- ASPNETAJAX -->
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <!-- CLIENT DEPENDENCY -->
    <add name="ClientDependencyModule" type="ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core" />
    </httpModules>
    <httpHandlers>
    <remove verb="*" path="*.asmx" />
    <!-- ASPNETAJAX -->
    <add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
    <add verb="*" path="*_AppService.axd" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
    <!-- UMBRACO CHANNELS -->
    <add verb="*" path="umbraco/channels.aspx" type="umbraco.presentation.channels.api, umbraco" />
    <add verb="*" path="umbraco/channels/word.aspx" type="umbraco.presentation.channels.wordApi, umbraco" />
    <add verb="*" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core " />
    <add verb="GET,HEAD,POST" path="GoogleSpellChecker.ashx" type="umbraco.presentation.umbraco_client.tinymce3.plugins.spellchecker.GoogleSpellChecker,umbraco" />
    </httpHandlers>
    <compilation defaultLanguage="c#" debug="true" batch="false" targetFramework="4.0">
    <assemblies>
    <!-- ASP.NET 4.0 Assemblies -->
    <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
    <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </assemblies>
    </compilation>
    <authentication mode="Forms">
    <forms name="yourAuthCookie" loginUrl="login.aspx" protection="All" path="/" />
    </authentication>
    <authorization>
    <allow users="?" />
    </authorization>
    <!-- Membership Provider -->
    <membership defaultProvider="UmbracoMembershipProvider" userIsOnlineTimeWindow="15">
    <providers>
    <clear />
    <add name="UmbracoMembershipProvider" type="umbraco.providers.members.UmbracoMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" defaultMemberTypeAlias="Another Type" passwordFormat="Hashed" />
    <add name="UsersMembershipProvider" type="umbraco.providers.UsersMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" passwordFormat="Hashed" />
    </providers>
    </membership>
    <!-- added by NH to support membership providers in access layer -->
    <roleManager enabled="true" defaultProvider="UmbracoRoleProvider">
    <providers>
    <clear />
    <add name="UmbracoRoleProvider" type="umbraco.providers.members.UmbracoRoleProvider" />
    </providers>
    </roleManager>
    <!-- Sitemap provider-->
    <siteMap defaultProvider="UmbracoSiteMapProvider" enabled="true">
    <providers>
    <clear />
    <add name="UmbracoSiteMapProvider" type="umbraco.presentation.nodeFactory.UmbracoSiteMapProvider" defaultDescriptionAlias="description" securityTrimmingEnabled="true" />
    </providers>
    </siteMap>
    </system.web>
    <!-- ASPNETAJAX -->
    <system.web.extensions>
    <scripting>
    <scriptResourceHandler enableCompression="true" enableCaching="true" />
    </scripting>
    </system.web.extensions>
    <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
    <remove name="ScriptModule" />
    <remove name="UrlRewriteModule" />
    <remove name="umbracoRequestModule" />
    <remove name="viewstateMoverModule" />
    <remove name="umbracoBaseRequestModule" />
    <remove name="ClientDependencyModule" />
    <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
    <add name="umbracoRequestModule" type="umbraco.presentation.requestModule" />
    <add name="viewstateMoverModule" type="umbraco.presentation.viewstateMoverModule" />
    <add name="umbracoBaseRequestModule" type="umbraco.presentation.umbracobase.requestModule" />
    <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add name="ClientDependencyModule" type="ClientDependency.Core.Module.ClientDependencyModule, ClientDependency.Core" />
    </modules>
    <handlers accessPolicy="Read, Write, Script, Execute">
    <remove name="WebServiceHandlerFactory-Integrated" />
    <remove name="ScriptHandlerFactory" />
    <remove name="ScriptHandlerFactoryAppServices" />
    <remove name="ScriptResource" />
    <remove name="Channels" />
    <remove name="Channels_Word" />
    <remove name="ClientDependency" />
    <remove name="SpellChecker" />
    <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add verb="*" name="Channels" preCondition="integratedMode" path="umbraco/channels.aspx" type="umbraco.presentation.channels.api, umbraco" />
    <add verb="*" name="Channels_Word" preCondition="integratedMode" path="umbraco/channels/word.aspx" type="umbraco.presentation.channels.wordApi, umbraco" />
    <add verb="*" name="ClientDependency" preCondition="integratedMode" path="DependencyHandler.axd" type="ClientDependency.Core.CompositeFiles.CompositeDependencyHandler, ClientDependency.Core " requireAccess="Read" />
    <add verb="GET,HEAD,POST" preCondition="integratedMode" name="SpellChecker" path="GoogleSpellChecker.ashx" type="umbraco.presentation.umbraco_client.tinymce3.plugins.spellchecker.GoogleSpellChecker,umbraco" />
    </handlers>
    <directoryBrowse enabled="false" />
    </system.webServer>
    <system.codedom>
    <compilers>
    <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
    <providerOption name="CompilerVersion" value="v4.0" />
    <providerOption name="WarnAsError" value="false" />
    </compiler>
    </compilers>
    </system.codedom>
    <runtime>
    <!-- Old asp.net ajax assembly bindings -->
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
    </dependentAssembly>
    <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
    </dependentAssembly>
    </assemblyBinding>
    </runtime>
    </configuration>



  • Tim 1193 posts 2675 karma points MVP 3x c-trib
    Jun 26, 2013 @ 15:41
    Tim
    0

    Hiya,

    I think the installer is running because you need to go into the back office, right click on the "Content" folder, and then select "Republish entire site". This should force a refresh of the content and make the installer go away!

    For the paths, have you been updating your web.config file with each update?

  • Niels Lynggaard 190 posts 548 karma points
    Jun 26, 2013 @ 16:21
    Niels Lynggaard
    0

    Hi Tim.

    Thanx for your input.

    I think the wrong paths is because the site is still using some Data Types that are no longer supported in v. 4.5 (Media picker with preview, Multi Tree Picker (I need to update that to use Ucomponents Multi Node Tree Picker instead)..So by removing these datatypes in the the Document Types I managed to get rid of the wrongly wrong path errors..

    However, republishing my nodes does not make the installer go away. I'm wondering if I have a rights problem so that the installer doesn't update some version string somewhere.. 

  • Niels Lynggaard 190 posts 548 karma points
    Jun 27, 2013 @ 03:46
    Niels Lynggaard
    0

    Hi again.

    I solved my little problem. It seems it was an issue with rights when upgrading. Here's what I learned;

    Upgrading through webdev server in VS2010 didn't work for me or had pretty much the same issues as my upgrade in localhost.

    I ran into the most annoying problem in windows, beeing unable to uncheck "read only" property on App_Data folder, so that caused further problems in relation to installer writing to that folder.

    I ended up throwing the site back up onto a windows 2008 box that I have and setting up the DB and the website there, scripting permissions for networks service and app pool on the required folders and HEY PRESTO, Upgrade works without the installer popping up again and again and again. The installer DID however finnish off by telling me it had acces problems reading a temporary file and told me to update the umbracoConfigurationStatus under app settings in webconfig and set the value to "4.5.0"..

    First update done, now I just need to adjust all the xlst-snippets to the new schema and move on to the next upgrade, hopefully running a bit smother..

  • Gordon Saxby 1444 posts 1855 karma points
    Sep 30, 2013 @ 13:41
    Gordon Saxby
    0

    Hi Niels, I may well be doing the very same upgrade starting from a v4.0.1 site. Can you let me know how far you got and where the major issues were, if any!

  • Niels Lynggaard 190 posts 548 karma points
    Sep 30, 2013 @ 14:58
    Niels Lynggaard
    0

    Hi Gordon.

    Sure thing, I've been meaning to do a write-up of what I learned. I actually managed to get all the way to the latest 6.x version.

    Basically, I did the upgrade in steps, taking the path: 4.0.1->4.5.2->4.7.x->4.9-x->6.1 taking backup of both DB and website between every step along the way.

    First, I checked all the packages for compatibility and found the upgrades needed. One package (the multi-node picker) gave me a bit of trouble, so I had to copy the values from an ntext collumn to int collumn in the DB to be able to switch to the multi-node-tree-picker included in Umbraco later versions (former UComponents) without loosing data. I made a little script for that. I also learned that uninstalling incompatible packages first was crucial between every step...

    Some packages I completely had to abbandon. The google analytics package for instance.

    Also, make sure to read the release notes for every upgrade very thouroughly, sometimes there are breaking changes (In 4.5 where the xml schema changed), sometimes there are good hints as of what is new in web.config and you REALLY need a good merge-tool for the web.config changes, it can be a real problem, especially if you jump over a few versions it can be problematic to get all things right in web.config.

    When the change to the xml scheme I used this little online-tool to convert my xslt-snippets to the new scheme, with a little manual work also where it didn't completely work. You'll get the hang of what needs to change when you go through this. The tool is found here: http://blackpoint.dk/umbraco-workbench/tools/convert-xml-schema-to-45-.aspx?p=2

    - If you don't want to change all your xslt you can set uselegacyxml (or whatever the setting is called) to true in web.config and you will be running the old schema.

    Also, I had to go through re-writing some of the controls that were written for the backend (custom dash-boards) and re-write to the newer API.. The old code worked, but I removed all the deprecated and obsolete code.

    Lastly, upgrading when running on visual studio dev server did NOT work, so I HAD to set up the website in IIS and configure the proper read/write rights on the folders as when doing a fresh install.

    I ended up spending somewhere around 25-30 hours on the upgrade. It involved a lot of try-and-error, backup, rollback try again etc. But I'd say the two major issues was incompatible packages and changes to web.config.

    Good luck with your project, I hope this helps a bit.

  • Martin Griffiths 826 posts 1269 karma points c-trib
    Sep 30, 2013 @ 15:09
    Martin Griffiths
    0

    Hi Niels

    What did you decide to do about Courier?

    Martin.

  • Niels Lynggaard 190 posts 548 karma points
    Oct 01, 2013 @ 11:45
    Niels Lynggaard
    0

    Hi Martin

    We decided to live without Courier for now..

    /Niels

  • Niels Lynggaard 190 posts 548 karma points
    Feb 06, 2014 @ 14:08
    Niels Lynggaard
    0

    Hi Martin.

    Now I'm at it again. This time I'm working with a much bigger website with more packages. Fortunately I now know a few of the tips & tricks to swap out some datatypes etc. beforehand.The website is planned to move from 4.0.1 and hopefully to the latest 6.x version.

    BUT! This site uses Courier, so this is interesting. What is the status on your struggles with Courier? Have you been able to get past 4.11?

    I'll take some notes this time so this may become a blogpost or sticky somewhere..

  • Martin Griffiths 826 posts 1269 karma points c-trib
    Feb 10, 2014 @ 10:33
    Martin Griffiths
    0

    Hi Niels

    Sorry for not replying earlier i've been sick!

    Courier 2 will run on Umbraco all the way up to v6. But you will need to very carefully test the multituide of versions out there. You can also try one of the nightlies available here http://nightly.umbraco.org/UmbracoCourier/2.7.8/nightly%20builds/

    You'll find far more issues working with Courier 2 on an upgrade than you would otherwise with an empty, clean build.

    Some of the problems I have specifically had include...

    1. Items transferring with property data missing or incorrect

    2. Items failing to transfer, with red box errors

    3. Packages failing

    4. Dependency level beyond 1 causes huge amounts of data transfer, which can take forever! 

  • Niels Lynggaard 190 posts 548 karma points
    Feb 11, 2014 @ 11:27
    Niels Lynggaard
    0

    Hi Martin.

    Thank you for your reply. That is indeed good news.

    This particular upgrade is bound to be a real struggle, since the site is massive and uses a lot of old incompatible packages and datatypes. So far, I've been able to get it to run 4.5 with legacy scheme..

    I think we'll reconsider how to attack this problem since we may end up spending as much time upgrading as we would with a clean install of 6.x and then port everything over..

    Hope you're feeling better :)

    /Niels

Please Sign in or register to post replies

Write your reply to:

Draft