20 Things Developers Should Know about Kentico 2020
A new year means that a new version of Kentico is around the corner, and I feel this time around the release situation is a little different, as no past version nor major release can hold a candle to the upcoming release of Kentico 13, aptly code named Kentico 2020 or Kentico Phoenix. There is so much going on, that I thought it might be good to summarize the key aspects of the release that developers should be aware of it.
I actually can't believe how fast the new year came upon us, but here we are in January 2020. A new year means that a new version of Kentico is around the corner, and I feel this time around the release situation is a little different. You see I have been using Kentico for over 10 years now, and I can remember some special releases. Version 5.5 R2, version 8, and version 10 are right up there in terms of examples of drastic new releases for the best .Net CMS on the planet. They each had major differences over past versions (just think of how CMSDesk and CMSSiteManager merged into the new clean single Admin tool in version 8). But in my opinion, no past version or past major release can hold a candle to the upcoming release of Kentico 13, aptly code named Kentico 2020 or Kentico Phoenix.
I say that because there are so many things going on in Kentico 2020 that it is actually hard to keep track. That might be because Kentico has actually had more time than normal for this release, or maybe its because the technology stack in the Microsoft .Net world has had a seismic shift in the last 2 years with the release of .Net Core, or maybe because the people are Kentico are a talented, motivated bunch and want to make sure that Kentico EMS continues to be a market leader. Or maybe it's all three of those factors.
Either way, I thought since there have been so many announcements and updates along the way, it might be good to summarize the key aspects of the release that developers should be aware of it. So without further ado, keep reading to find out my 20 Things that Developers should know about Kentico 2020.
1. The Fall of the Kentico Portal Engine
Yes we have been hearing about the removal of the portal engine development methodology in Kentico for a few years now. In fact it was first announced in 2018 at that years' Kentico Connection event that MVC would be the first class citizen in terms of Kentico development methodologies on a going forward basis. Fast forward two years and here we are. Yes, starting in Kentico 13, you will NOT be able to create new portal engine sites. That means webparts, webpart based widgets, and webforms are all going away. If you or your organization hasn't made the jump to MVC now is the time! And if you need help doing that, please consult the MVC Transition Guide that Kentico has published.
Also, since this topic always brings up questions, I want to assure you that this does NOT mean that your Kentico site is not supported. Notice in the above graphic the "Support for projects built on portal engine" still continues on past 2020. It actually goes all the way through 2022. That means your investment in Kentico portal engine site(s) is still safe until then. But again, if you haven't considered switching, now is the time.
2. The Rise of .Net Core / .Net Standard Support in Kentico CMS
In my opinion, the addition of support for .Net Standard and .Net Core to the Kentico Libraries (the nuget packages that allow us to use the Kentico API in our MVC sites) is the single most exciting point to the Kentico 2020 release if you are a .Net developer. How could you not be excited about throwing off the shackles of older web technology (looking at you WebForms and MVC5)? With Kentico 2020 we can now build our Kentico sites utilizing the latest bleeding edge technology that Microsoft has to offer.
Are you looking to use MVC Core, Single Page Applications (SPA), Native Mobile Applications, or Blazor to build out your next project? Well when Kentico 13 comes out, these possibilities open up to you. The projected release of Kentico.Libraries in version 13 is rumored to support for the .Net Framework 4.8, .Net Standard 2.0, and .Net Core 3.0. If you are looking to replace your old Kentico libraries or collections of webparts from previous versions of Kentico I would highly recommend starting that work in .Net Standard 2.0. That way you can use your libraries in just about anything you want. This should also set you up for .Net 5 (which is scheduled to release in November of 2020).
Not only does this change allow us to switch app models in the Microsoft world, but it also lets us update our tooling. If you want to, you can now start using more Visual Studio Code, the .Net Core CLI, the new CSProj system, etc. etc. Welcome to 2020 and modern web development! Again, in case you can't tell, I'm pretty stoked about this.
3. Page Builder Content in Widgets will be Searchable
While not as earth shattering as .Net Core support, this subtle update makes a big difference. Currently in Kentico 11 and Kentico 12, if you create a widget that stores content directly in the Page Builder's widget properties, that content ends up on the Document's DocumentContent field in the database in a JSON representation of the all of the widgets content (and not any structured single type of fields). This is great from an ease of use and development friendly standpoint. Unfortunately, it is a deal breaker for searchability. The current Kentico Smart Search (both local and Azure search based index types) doesn't understand these newer field types, and therefore the content of is not searched when Kentico does its index thing. This is a known issue that was pointed out in the release notes of Kentico 12 and Kentico 12 Service Pack 1.
Kentico has decided to fix this in the new version. Not only will the content of Page Builder widgets be searchable, the content will also be translatable and adhere to proper workflow(s). What the fix means to me is that we can now consider using more standard MVC widgets without backing them via structured storage mechanisms like Nodes in the Pages Tree. My team and I over at BizStream had been using this method to get around this issue in Kentico 12, but I will admit there was tiny bit of duplication in that method. I am still however, a strong proponent of using structured content in the Pages Tree to store as much of the content as possible on the website though. Remember, even with this fix, it is still not that easy to reuse content in widgets when compared to having good structured content and multiple Page Types to model your content in the Tree.
4. Kentico Licensing Has Changed a little bit
This item isn't totally developer focused, but I believe that developers should still know and understand the Kentico EMS licensing model. And 2020 has brought some changes to the model. Richard Brulik, Kentico's Global VP of Sales, announced back in November of 2019 that a new Kentico pricing and subscription model would begin on January 1st 2020. I recomnend reading the entire article to become aware of all of the changes.
The change that affects developers the most is probably that the base license (and a few other older grandfathered versions) of Kentico is no longer around. That means the old ultimate edition of Kentico CMS is now the only version of the CMS. I actually like this change. In my opinion the base license were lacking 2 or 3 key features (like Kentico Content Staging) that were critical to achieving real world success on a project. Yes, it costs a bit more (not at all significant in my opinion), but now developers should always have all the tools they need to work efficiently. I'm not sure how anyone really worked without Content Staging anyway. Kentico EMS remains unchanged (it still has all the same digital marketing components on top of the CMS like personalization, lead scoring, marketing automation, etc.).
The new subscription model is also interesting because it adds on the ability to have Kentico Kontent connect with Kentico EMS, but more about that later in this list. If you aren't sure what Kontent is, check out my posts on Leveling up a Kentico Kontent site.
5. Linked Nodes are back via newly designed Reusable Content
One thing that never ever made sense to me is the removal of Linked Nodes in the Kentico MVC development methodology. This was done somewhere around the Kentico version 10 and version 11 changes for MVC (kind of). The UI of the Pages App no longer allowed you to point and click create Linked Nodes, but if you knew the super secret barely documented keyboard shortcut (CTRL+SHIFT + drag around the content item), the system allows you to still create them (even in Kentico 12).
Now there are three supported ways to create what Kentico terms as Reusable Content:
- Link a page or link and object through the new Linked Nodes feature and interface
- Ad-hoc Related Documents (through a Page Type field of type: Page field)
- Related Pages (through the Related Pages tab and relationships)
For a full run down on all three options I would recommend that you watch this episode of Michal Kadak's Ketchup on Reusable content in Kentico. This new feature (#1 above) easily supports 1 million linked objects and can mostly handle 5 million linked objects! That's pretty impressive. The new multi-select dialog is also helpful when you need to select 3,4, or 5 items at once. Less clicking for sure!
6. Many Modules & Features have been Removed from Kentico Admin
Pro Tip: For a full list of newly non supported features in Kentico 13 please read Phoenix is on Fire.
Not just modules of the admin UI have been removed, but some page types as well (CMS.file being one), API examples, and Sample pages (that were from very old parts of the system). One thing that is super important to note if you are a developer, not only are the UI screens gone, so are the corresponding API calls from the Kentico API. So no, you cannot simply roll your own front end any longer either. Yeah, let that sink in for a second.
If you read this far, I think you are starting to notice why Kentico 2020 is such a big deal. But let's keep going.
7. Dynamic Routing is now Out of the Box with Kentico
So much has been raised about MVC Routing in Kentico MVC that I cannot begin to tell you how much time I have spent talking about it for the last 3 years. I have had to talk about it with my developers (over and over), Kentico partners, end clients, other Kentico MVPs, the Kentico product team, and even a few media outlets. Honestly, I am kind of sick of talking about it. I get it, routing is super critical to how you handle any application or website these days. And I get that it has been a missing piece in the Kentico MVC story for some time now, because when anyone starts their MVC journey this is something that has to be absolutely figured out each time. But literally there are multiple ways to create a routing solution, and in my opinion no such thing as the perfect way to handle every requirement in the world. Each application has its own nuances when it comes to URLs and routing.
Luckily having to figure out routing from scratch is no longer the case. Now in Kentico 13, there is a Dynamic Routing engine that is coming directly from the Kentico EMS product. Kentico has spent a lot of time on it in order to make sure it works correctly and can scale to handle many different configurations and scenarios. This new feature in Kentico 13 should really help new developers best learn how to handle routing and URL structures in Kentico.
I can't really show the routing off here, as it is not in the beta release yet. But more about beta further in this list is coming. However, one super interesting tidbit from Kentico is that there will be a migration tool that helps migrate your old routing solution to the new Kentico 2020 dynamic routing solution.
8. Toolkit for Kentico will support Kentico 2020
Kind of a no brainer. But the Toolkit for Kentico will be updated to support Kentico 13 within 30 days of the launch of the new version. BizStream is committed to keeping the tool up to date so that the following extensions work for the latest flagship version of Kentico (including MVC support). Yes, we do still recommend Kentico CI for deployments to local dev, dev, test, and qa. But when it comes to deploying to production from non production Compare for Kentico is still an excellent tool to get the job done. It works especially well if somehow the environments get out of sync and you want to visually compare what is different on those environments. Just ask fellow Kentico MVP Brenden Kehren how well it worked on his recent project when multiple environments were out of sync.
We are also working on an update to bring NuGet packages to the Toolkit for Kentico. This should help with installations of MVC and general installations as well. Keep an eye out for that later in the year. Also be on the look out for a webinar coming up soon in partnership with Siteimprove for Kentico and Siteimprove.
9. .Net 4.x Full Framework is NOT Dead
Back on to the .Net development track side of things. Even though I mentioned above that .Net 5 is future, and .Net Standard 2.0 support is incoming in Kentico 13, that doesn't mean you have to fully jump out of MVC 5 right now. Kentico 13 will still support the full .Net framework 4.7.x and 4.8.x out of the box. This makes sense as the main Kentico admin tool is still in webforms for Kentico 13. The admin tool or "Mother" as Kentico likes to reference it as will not be touched in this release.
That is a good thing for developers because that means that all of our Kentico custom modules, custom form controls, custom classes, custom scheduled tasks, custom Integration Bus classes etc. etc. will continue to work just fine. Now, eventually this will change, but for now you can focus your efforts on ramping up to .Net Core for your live site development.
I may or may have not heard a rumor that Mother could even be re-done in something other than MVC Core. Obviously this is just a rumor, but how cool would it be to have native mobile app or progressive web application that makes up the Kentico Admin tool in Kentico 14 or 15? Time will tell.
10. More Out of the Box MVC Widgets with Kentico
Kentico 2020 will come with a set of MVC Components. "Components includes widgets, inline property editors, and form controls. A picture is worth a thousand words. So why not just show an example of a new widget from Boris Pocatko:
Click the play button on the above tweet to see the Rich Text widget in action. Now, I am teasing you a little bit, this widget is actually from the new Kentico Marketplace. But, the point is that more MVC widgets will be out of the box in Kentico 13 (and 12 SP1 for that matter) than ever before. The full list is coming in beta #2 of Kentico 2020.
By the way, the old Kentico marketplace is retiring on June 1, 2020, so get any items downloaded now for your legacy projects that you may need.
11. You Can Get the Kentico 2020 Beta Right Now
Since I have been talking and showing the beta version of Kentico 13, I might as well call it out. Beta #1 has been out for some time on Kentico DevNet. But what has me excited is that Beta #2 comes out this week! I have heard that either Jan 28th or Jan 29th 2020 will be the official release date of it.
Kentico would love it if you head on over to DevNet, download the latest Kentico 2020 beta, and give them some feedback. You can actually give feedback in many ways. But if you really want to get their attention just send them a tweet with the #Kentico2020 or #KenticoPhoenix hashtag.
12. The Kentico EMS Roadmap is Updated
The official Kentico EMS Roadmap was updated recently and can be found at https://www.kentico.com/product/roadmap. Why is this important for Kentico developers? Well to me it makes sense to keep an eye on this page for what is coming next in the product. That way you don't have to take just one crazy MVP's word for it. It's straight from the product development team.
The Kentico EMS roadmap also gives you some other features that are coming in Kentico 13 that aren't really talked about a ton such as the newly updated Translations.com integration. I'm hoping that once milestone 4 is figured out and published, that more integrations are included on the list. Possilbly having the Zapier integration that Michal Kadak has mentioned on Twitter and his Ketchup Youtube series would be very welcome as well.
13. You can now connect Kentico EMS to Kentico Kontent
I did mention Kontent once before in this list. Let's frame out the details here though. Previously Kentico EMS and Kentico Kontent were two different products that solved two different needs. Originally when
Cloud Kontent was introduced, many end users and clients were not sure if or how the two tied together. Now that story makes more sense with the release of the Kontent module for Kentico EMS.
Imagine you wanted to add a high powered CDN to serve images from your Kentico site. This CDN needed to serve images of different sizes and renditions, while allowing for control over approval of images before they went out to the public. Enter this new module for Kentico EMS. The Kontent module automatically synchronizes all published content and assets (media files, page attachments) from a specific site in Kentico EMS to a specific project in Kentico Kontent using the Content Management API.
If you have the new Kentico CMS/EMS subscription, a license to Kontent comes bundled with it, and this is an easy way to use the two products together. This could be a reason to upgrade.
14. Marketing Automation is Getting a Refresh / Improvements
Something that is in the first Kentico 13 beta is the newly updated Marketing Automation UI and Marketing Automation templates. The newly update UI is pretty slick.
I think it should work much nicer to create flows and read them quickly. It reminds me a bit of other (overpriced) Marketing Automation platforms. However, I think the larger improved is the ability to create Marketing Automation templates in Kentico 13. Being able to start with a template is a time saver for sure. It will be very nice to not start from scratch. I could see a library of MA processes being created and easily shared with all of your projects.
Right now it looks like these templates are sourced out of the CMS_AutomationTemplate database table. The template itself is just an XML serialization of the Steps inside of the OM Process. I'm guessing some sort of mechanism is coming in the admin tool to export out an Automation as an XML Template, but I don't see that yet in the box.
15. Sean G. Wright Has Some Tech Recommendations for Kentico 2020
Recently honored Kentico MVP, Sean G. Wright, has some amazing technical details at his Dev.To Kentico 12 Patterns blog post series. Sean goes into more things to prepare for Kentico 2020. There is some overlap between my list here and his, but I think the two blog posts compliment each other at the end of the day. I think my favorite item in his list is the "Isolate ASP.NET Behind Abstractions" item. I think this is a really good approach to creating Clean Code.
Also, Sean is just a good guy and has done an amazing job of contributing to the Kentico Community this year, including my own small little Kentico.CacheDoctor project. Thanks Sean!
16. Async Support for ObjectQuery
According to Michal Kadak, Document Query in the Kentico API should be supported as in terms of the async / await pattern. Why is this important? One word: performance. The more we can do in an async fashion the faster our code should run (in theory). Since .Net Core really opens up a whole host of Async supported scenarios (Razor Pages, Blazor) it is really nice that backend libraries can continue this performance improvement.
Also adding interfaces to the providers (allowing IoC) is a welcome addition to the Kentico.Libraries package.
17. Trevor Fayas Community Dynamic Routing for K12
I know, I am cheating a little here. This doesn't really have to do with Kentico 2020, but Kentico MVP Trevor Fayas has done such a good job of making a Dynamic Routing module for Kentico EMS 12 it is just too hard to ignore. Trevor has put in quite a lot of effort on this, along with others in the Kentico development community on slack, and it is a usable solution for routing in MVC5 if you don't have one yet.
Trevor's description of the solution: The Dynamic Routing module will automatically map pages in Kentico to MVC Controller, Controller + Action, View + Model, and View, as well as easily retrieve any page given the Url. Can also add Customize the actual Url of a page (not just Alternative Urls). This is handled through Url Slug automatic generation, and fully integrates with Kentico's systems. This also should be similar to Kentico 2020's dynamic routing so upgrade path should be minimal.
Also, If you don't have access to the Kentico Slack group, just shoot me a tweet and I will invite you into the group. But seriously I would check it out if a need is there.
18. Kentico 13 WON'T Support SQL Server 2008 R2
Yes, that's right, in 2020 Kentico CMS won't support a SQL Server build that started 12 years ago (2008 R2). Do I need to say more? Sadly we have a few clients who still run SQL Server 2008 R2, you know who you are... I'm tempted to shame them here, but I will be a (somewhat) professional about it and leave those details out. Maybe you should consider updating to a newer (or newest) edition of SQL Server for your database if you are still in this category. Azure SQL is a great way to go as well.
19. Kentico Visual Studio Extensions - Use them for MVC
Something that I think flew a bit under the radar was the very recent release of the Kentico MVC Visual Studio Extensions project. You can easily add in MVC components using this Visual Studio add-in. Instructions can be found on DevNet for how to install and use it.
20. The release date of Kentico 2020 will be ...
Last, but not least, you may be wondering when can I really get my hands on all of this. Well as I mentioned previously, Beta #2 comes out the week of January 26th, 2020 (so soon). But the production release date of Kentico 2020 is still yet to be disclosed. The best guess / rumor that we have heard is that November 2020 is a good target month for the release to actually happen. Of course that is not in stone.
Remember the beta versions of Kentico are NOT to be used for production, so yes you do indeed need to wait.
I know I for one cannot wait for the official release of Kentico 13 known as Kentico 2020. I hope this lengthy blog post has helped get you update to date as to where we are in this first month of the year. I plan to have more coverage of Kentico 2020 beta 2 here on my blog and also on the Kentico Rocks podcast. Thanks for reading!