Rough time estimate for upgrade from Umbraco 8 to ...
# help-with-umbraco
s
Hi there, I know this is going to be highly contextual, but I was wondering if anyone has single handily upgraded an Umbraco from 8 to latest, and could give any pointers of the time frame for this? I'm the sole inhouse developer for a large (but fairly basic) brochure style website for a higher education organisation. I ask as a previous developer put a 6 week timeframe on it, but this seems pretty ambitious. Am I right in thinking that there is no direct upgrade path from 8 - 12, and would require 2 upgrades? Any insights anyone can share would be much appreciated! Thanks Simon
a
I think this depends on a lot of different things. I've migrated a few medium sized sites in less than that time. Instead of doing an actual upgrade, I've gone with a "migration" instead. This means setting up a new solution, and then importing all the content and media from the old site to the new site. I've set up the content types and data types manually one the new site, but you can migrate these as well. I've used my own Limbo Migrations package this, but I think most in the community are going with **uSync Migrations**: https://github.com/limbo-works/Limbo.Umbraco.Migrations https://github.com/Jumoo/uSyncMigrations If you stick with upgrading, you might still have to convert data from their old format to their new format. I think most of Umbraco's picker were using UDIs instead of IDs in Umbraco 8, so this shouldn't be an issue. But if you have any custom property editors, you'll likely have to convert the values of those. Also the grid and Nested Content has been deprecated, so if you've used those, you need to convert their values to Block List or Block Grid.
s
Hi Anders, thanks for that really appreciate it. I hadn't considered doing a migration instead of an upgrade - I'll definitely have a look at Limbo Migrations to see if its something that could work Really useful to know about the grid and Nested Content changes deprecations, the website uses them pretty extensively. If there's any other common pitfalls that are good to watch out for please let me know! Many thanks
a
My package doesn't really have any documentation, so for that reason I can't recommend it. So might be worth looking at uSync Migrations instead. I'm currently working on my 5th Umbraco 7 to Umbraco 10 migration using my package (U8 to U12 should be roughly the same), and I've really gown fond of my package. Pitfalls will probably be site specific - at least I can't think of any in general. When generating new block list values, each item has a content part and optionally also a settings part. Each part should have their own unique GUID UDI. I try to generate the UDIs in a reproduceable way so that if I run the migration again I should get the same output if based on the same legacy data. I'm not sure how easy it is to control this with uSync Migrations though.
h
Hi @si26 I've done a lot of migrations through the years (and have more on my schedule!). @Anders Bjerner has mentioned a few of the things to look out for. The main thing I've done in order to provide an estimate is to do a little "Audit" of the current schema, looking for the following: - How many "non standard" property editors are in use? Do they have an updated package available? If not, is there an alternative package? How difficult would it be to convert the data? (How many nodes are affected?) [NOTE: sometimes there is a complex data structure which will need to be changed, but it's only on a single node - in which case it's often faster and easier to manually re-create that content rather than try to do it programmatically.] - How many View files (Templates and Partials) are there that will need to be updated? [If you have a site with 1000 nodes, but only two templates in use, that can be a really quick project!] - How much custom code is in use? (.CS files) All those will need to be checked/updated. Are there any external libraries being used? Are those compatible with the latest .Net version? In my experience, as tricky as it might be to do an upgrade on the current Umbraco DB, I have found that unless it will be a major rewrite for other reasons (Like a whole re-design/re-architecture of the site), updating the existing DB will help you avoid other issues (like changing ID numbers - which can become an issue if there is code which calls things using the INTs rather than the GUIDs - not a recommended approach, but I've inherited a lot of sites which relied on this...) In terms of actual timing, I've had these type of projects take 85 hours to 360 hours... so there is a big range, based on those factors I mentioned.
a
For some of the migrations I've done, I also went through a similar estimation process as Heather. I listed all document types and their properties, and like Heather I look at if the same property editor exists in U10/U12, or if it can be converted to a viable alternative. For each property I add a best case estimation and a worst case estimation (and calculated an average). I then followed a similar approach to for convert grid values to corresponding block list values. Estimating best and worst cases, and then calculating the average, is a concept I've used successfully in the past. Some parts will likely be closer to the worst case estimate, while others will be closer to the best case estimate. So average of the two will generally give a good picture of the time needed for the migration. If you want to take a bit more risk or give the client a bit of discount (for whatever reason), the estimate you report back to the client can be closer to the best case estimate, and if you need/want a bit more overhead, you can instead report an estimate closer to the worst case. If an internal project, the three estimates still give a god picture.
The estimation process of course also takes a bit of time, but even for internal estimations, our project managers loved this, as they then better can allocate the needed time among other projects.
k
For our 8-12 upgrades, the net4 to net7 upgrade took 90% of the time. Any NuGet you used in Umbraco 8 and .NET Framework 4 won't be usable in Umbraco 12 and .NET Core 7. The Umbraco part was easy peasy and took 10% of the time. Some examples of packages which took hella time to replace: * PDF generators * Examine PDF (and other media) indexers * XML sitemap generators Also, if you have alot of code in your `cshtml`s, it can take some time to replace that with the ASP.NET Core 7 equivalents. But I'd say that's part of the net4-to-net7 upgrade.
s
Thanks for this real useful , yeah the website uses a lot of of different views so I think that is going to take a big chunk of time. I hadn't considered the NuGet packages so will add those to an audit beforehand
Thanks Heather, really useful. It's a little daunting even auditing this site but I think a good thing to go through. That's good to know that upgrading the existing DB is also a viable option. I think the the website is content heavy and will require keeping the current one. When you mention that its tricky to upgrade the current DB, is there ever any direct SQL work that needs doing, or is it more the switch from net4 to net7?
Just as a general question, I've read that theres no direct upgrade path from 8 to the new 13 that's out in Decemeber. Just as a question of process, does anyone know if this would require a complete upgrade to Umbraco 10 first and them to 13? And in terms of timing would this mean duplicating all the steps mentioned about? Maybe not the right questions, but I'm a little confused how the double upgrade works. Thanks for the insights so far!
j
Umbraco doesn't support jumping straight to 13 - you'll need to get to 10 first. But going from 10 to 13 will be a lot less work as it's not a whole change of the framework - just an upgrade. Most packages (with their respective nuget upgrades), views and custom C# code that works in v10 will work in v13.
h
@si26 - Running the DB upgrade is usually pretty smooth, I was just referring to issues with non-compatible property editors, which you need to deal with after the fact. Just so you know, you *don't * need to update all the cs code/views for each "version" you upgrade through (8 -> 10, 10 -> 13).
What I generally would do (bare-bones edition): 1. Take a copy of the live v8 db, set it up on SQL server locally. 2. Set up an fresh, empty install of an Umbraco 10 site locally, update the appSettings to point to the local v8 database. 3. Open the site in a browser, the upgrade wizard will run on the v8 DB (making it a v10 db) - TAKE A DB BACKUP. 4. Set up a fresh, empty local v13 site, update the appSettings to point to the local database. 5. Open the site in a browser, the upgrade wizard will run on the v10 DB (making it a v13 db) - TAKE A DB BACKUP. 6. Now you can copy over/update all the files from the original v8 site. (Media, CSS, Views, etc.) [This is the step that takes the longest, as per @kdx-perbol 's comments]
s
@Heather this is beyond useful, think you've just saved me many hours of headache - many thanks!
h
My pleasure. 😊
a
I think Heather's bullet list is the recommended approach for upgrades. If this isn't anywhere in the documentation, it should be
2 Views