Sitecore 9 is here!
It seems like just the other day that 8.0 was released. Sitecore 9 has been released! The next major version also packs a lot of punches and a lot of new features, both in the core platform and updates to keep all the developers happy. It also sets the platform up for more extension points for the future.
As a Sitecore MVP we were given access to an early release to play with. Here is a summary of some of the exciting new features.
Secure by default
The new services introduced in Sitecore assume a Secure by default approach. Given the changes to browsers and “not secure” warnings, Sitecore services should now be configured using SSL certificates – include IIS, SOLR and xConnect.
Hello SQL Server (again)
Support for a lot of things has been beefed up and updated:
• Windows Server 2016 and Windows 10
• SQL Server 2016 and SQL Azure
• .Net Frameworks 4.6.2
• xDB support for SQL Server 2016 and Cosmos DB
That’s right, you can deploy to a Microsoft only platform, which means you can spin up an entire instance just in Azure. MongoDB is not a requirement and SQL Server has been added as a provider. This should hopefully make it easier for those who did not take the leap due to extra support worries.
Goodbye Lucene! Sitecore no longer supports Lucene so you must use SOLR or Azure Search. This was already necessary for PaaS deployments but now it is across the platform.
There have also been some changes to the Search API which adds support for features such as SOLR Spellcheck, Suggester, Highlight, More Like This. This should help make search more central to your content platform for your end users.
The underlying code has also been refactored in several places allowing it to be more customizable.
Clarification: You can still use Lucene if you are running CMS-only mode (i.e. no Analytics/xDB). If you are running multi-server, multi-CD set up then best practice recommendation has been to use SOLR/Azure for a while now anyway
Sitecore Installation Framework (SIF)
Sitecore has introduced a new framework to allow you to install and configure your installation. The new framework provides an automated framework built on PowerShell that can deploy and configure a standard preset server architecture.
The framework can be extended by creating your own custom PowerShell functions, or add your own extensions to further customize your specific installation.
This should make DevOps tasks and server automation easier in the long run. It should also be interesting to see the kind of modules the community develops and shares over time.
Some big change to the way that configuration patching now works, making it drastically easier to
- Ability to configure an server for a particular role by setting a single setting in config. You no longer need follow the long server setup guide and crazy excel spreadsheets.
- Additional patch folders allowing you to keep your custom patch files separate from default Sitecore and Modules configurations
- Ability to control the load order of config file and folders
- Ability to easily switch search provider by changing a single setting similar to how you configure server role
Be sure to read my follow up post which goes into a lot more detail and the available configuration options.
Now you can OWIN the Experience too 😆
The latest release of the core platform introduces support for OWIN authentication middleware enabling users to log in via standard Microsoft OWIN authentication providers. This allows authentication against a number of different Identity provider and can be used as a replacement for the AD module.
Current OWIN middlewares available include:
- OpenId Connect (AzureAD, identity server)
- Microsoft Account
It is also possible to write a custom OWIN middleware. Logins can be either Virtual Users or Persisted Users in the membership database. This means that the authentication can be used to both log into the CMS or for your frontend website, allowing you to identify and collect rich data about your users whilst making it easier for them to use Single Sign On.
This is the most requested feature on the Sitecore Developer Uservoice and Sitecore Community Uservoice. Pretty long running already. Most of us have probably been using a variant of Dynamic Placeholders that Nick Wesselman wrote way back in 2011 but we finally have Dyanamic Placwholder support built right into the platform!
MVC only… So no love for those still using Webforms (but any new project should be using MVC imo).
@Html.Sitecore().DynamicPlaceholder(string placeholderName, int count = 1, int maxCount = 0, int seed = 0) @Html.Sitecore().DynamicPlaceholder(string placeholderName, Func<HtmlString, DynamicPlaceholderRenderContext, HtmlString> outputModifier, int count = 1, int maxCount = 0, int seed = 0)
The implementation is more feature rich than some of the past community versions, allowing your editors to customize using Rendering Parameters. This allows your editors to specify the number of placeholders for example.
You can pass in a “placeholder template”, which allows for the dynamic generation of the markup for the placeholders. Since the markup is passed in using a lambda function it allows you to override the logic of the markup generation, which can be useful in scenarios when you need to add a CSS Class which causes the row to break onto a new line every 4th placeholder for example.
OData Item Service
a.k.a. Sitecore Services Client (SSC)
Much of this services underpins the Sitecore Client and SPEAK, providing read only Odata Content via REST services. It’s continuously receiving updates every release and you should check it out. The latest release adds improves CORS handling and new API key management features allowing individual Web APIs to have multiple configurations. Both great additions to allow external services and apps to consume Sitecore data in a secure way.
xConnect is here! This was announced in Symposium 2016 and the presentation from Todd Mitchell is well worth a watch.
xConnect is a new service layer that sits between xDB and any client, device or external service that wants to read, write or search xDB data making it easy to retrieve and consume analytics data in an easy and flexible way via the user-friendly APIs. Currently xConnect is comprised of two services: Collection and Search.
Since xConnect is a service layer, no client will have any direct access to the collection database or the search indexes, including other internal system such as processing servers. xConnect is provider based and this level of abstraction allows it much easier to swap out search and collection providers – and with Sitecore’s newly (re)found support for SQL Server for xDB these changes all tie in together.
It’s important to note that xConnect is new, built from the ground up. As with a few other recent modules, Sitecore have followed a modular Service Oriented Architecture it exists as a standalone service without any dependency on Sitecore Kernel. This allows the service to be hosted and scaled separately.
The service layer now makes it perfect to be able to collect and analyse external data from many different services. You can import data from a CRM, a mobile app, a fitbit, point of sale data, a dreamcatcher… The possibilities are endless.
A lot of work has also gone into PII and GDPR compliance, a.k.a. the “right to be forgotten”. Using xConnect, it should be possible to create various modules to comply with the various legislation.
xConnect implements the oData protocol, an open set of standards for building and consuming RESTful APIs; the same protocol as SSC. As with the other parts of Sitecore, xConnect is also secure by default and clients communicate with the xConnect Client API over HTTPS, keeping your data transmission secure.
Another new tool designed with a very slick and easy to use interface with a drag and drop interface to create automated online campaigns in Sitecore. This is a replacement for Engagement Automation plans, but there is no direct relationship between the tool, so don’t expect any conversion tools to be made available.
Marketing Automation will allow you to set up some complex campaigns, allow you to set simple triggers to enter a contact into the plan and effectively track them throughout the journey. The drag and drop functionality makes it simple to set up conditions and rules allowing you to base
campaign decisions on a vast number of data points such as demographics, contact attributes such as device detection or list membership, personas, campaign or goal triggers, thus allowing you to deliver a more personalised online experience.
Another version of SPEAK! I know right. But this time they have listened to the community and moved away from using a proprietary framework and use something a little more industry standard: Angular. This is great news and should make it much easier to learn, better community support and also hopefully make it easier for front-end developers to get involved with. Along with JSS this opens but the platform to an even greater set of developers.
The Marketing Automation application is built using SPEAK 3 so you can already see some of the functionality which you can achieve and hopefully this will allow for some nice UI to be developed in the future with nice drag & drop functionality for example.
You can read more about SPEAK 3 in the documentation.
WFFM is dead, long live Forms!
Well, not quite. A new Experience Forms module has finally been released. Sitecore announced at SUGCON EU 2016 that they were beginning work on a new module, which is a complete revamp ground up rebuild of the module.
New feature include:
- Completely resigned UI with a heavy focus on the UX to make it easier for marketers!
- Finally a Form builder with drag and drop functionality
- Multi-page forms – no more hacks to mimic this to work and adds in some features for conditional scenarios, such showing a different page based on users selection.
- Ability to create form templates, allowing you quickly create a form and making it re-usable as a template and then extend for the specific need.
- MVC only again! If you haven’t jumped the Webforms ship, the writing is on the wall…
The existing WFFM module has also been updated to work with Sitecore 9.0 so it should make immediate upgrade easier and mean you do not have to rework all your existing forms, fields, save actions and other customizations immediately, but expect support for this to be dropped in a future release.
Headless seems to be the industry buzzword at the moment! It’s always been possible to go headless with Sitecore, there was even a blog post by Lars Nielsen, one of the founders of Sitecore, which goes into why Sitecore has always supported this to some degree. Short answer: separation of content from presentation. We’ve also had the ItemService and the RESTful API for the ItemService or the possiblity to use Sitecore Services Client (SSC) to create a service layer for custom data-driven appplications. We even has the Sitecore Item Web API if you go back long enough.
So what’s new?
This was first demo’d at SUGCON EU 2017 by Alex Shyba and Adam Weber, and it was just as exciting seeing this time round at Symposium. So Sitecore “could already do headless” so actually what’s new? The old services were a little heavy, provided too much data (making it less clean for frontenders to use exclusively), did not provide Experience Editor support or personalisation support.
The technical parts are all well and good, but one of the more important aspects is that this will allow your frontend developers to actively lead the development of your site, making it less daunting/more familiar for them to get involved in the full lifecycle and also allows your team to use the technology stack that best works for them.
Have a read through the documentation, it’s very thorough and the samples in Github will help you get started. Provide feedback to TeamX in what works, what doesn’t, how you think the module culd be better – the more feedback you provide now the better it will shape the module to match real world usage.
As you would expect with a major release there are bound to be a number of breaking changes, so obviously thoroughly test everything. Top ones that jumped out at me:
- Major code clean up! You did not update your old code that referenced code marked obsolete, they have been removed. You’ll need to update all this.
- R.I.P. sheerUI ribbon 😢 This has now been deleted from the Experience Editor most things have been SPEAK driven for a while anyway.
- httpRequestBegin pipeline now fires from OnPostAuthentication HTTP module event. This was previously from OnBegin event, so you should be able to access authenticated user information in the pipeline now. Depending on the customizations you may have already made to httpRequestBegin pipeline (and this is a very common one to patch into) it may impact your code if it is sensitive to HTTP module event timing.
- Goodbye Silverlight! I don’t think anybody is going to miss this.
Upgrading to Sitecore 9
There’s obviously a lot of changes in the new platform with a number of new features being released. There appears to have been a big investment in trying to improve the upgrade process. You can directly upgrade from Sitecore 8.1 onwards using a single update package. Very nice. You can also upgrade from Sitecore 6.6 using the Migration Tool.
The upgrade also includes migration and conversion of data from MongoDB to SQL Server if you wish to move to a fully Microsoft stack (on premise or Azure).
There is no migration tool for WFFM to Forms yet. This may happen at a later date but bear in mind that WFFM is available for Sitecore 9 immediately, so hopefully something will be made available at a later date.
Get it now, have a play!
Needless to say, this is just tip of the iceberg changes and there’s a heap of performance improvements that have been made to speed by the system and editing experience in general. For example, the Experience Editor performance has been improved by reducing the number of calls for assets by using bundling and sprites and only dynamically loading ribbon button then a user selects then rather than pre-loading them all.
Be sure to check the release notes for the full list of new features and enhancements. The list of bug fixes that have also been rolled into the release from previous updates is also huge, hopefully making the platform more stable.