Smarter ideas worth writing about.

Top Nine for Sitecore 9

At the 2017 Sitecore Symposium, Sitecore announced the release of Sitecore Experience Platform 9.  Here is my list of the top 9 features and capabilities that have been included in this new release.

1. Headless and JavaScript Services (JSS)

I've had many customers ask me for recommendations on building rich front ends or client applications on top of Sitecore using Angular or React.  In the past, my response has always been that it is definitely possible, but I wouldn't recommend it.  The main reason I usually cite is because a lot of the great features provided by Sitecore, such as personalization and A/B testing, are closely tied to the Sitecore rendering engine, which runs on the server and is not exposed via REST APIs.  With the release of Sitecore 9 that is no longer true.  One of the big announcements at the 2017 Sitecore Symposium was the release of Sitecore JavaScript Services, or JSS for short.  This isn't just another new content API like the Sitecore.Services.Client API or Item Web API Sitecore has offered in the past.  It is a full SDK for building rich JavaScript front ends that includes support for personalization, A/B testing, analytics/tracking and even Experience Editor support.  Although JSS is currently a Tech Preview Release, Sitecore has already invested a lot of effort into building out this SDK and will continue to enhance and support this SDK in the future.

2. Federated Authentication Support

Sitecore has always relied on ASP.NET membership for user authentication into the platform.  If you wanted to leverage authentication through other mechanisms, you had to do a lot of custom development to build your own provider on top of the ASP.NET membership model.  Sitecore now supports the ASP.NET Identity model, which allows you to configure your Sitecore environment to allow authentication through various third-party providers.  Now you can allow users to log into Sitecore using Azure Active Directory, ADFS, Microsoft, Google, various social media platforms such as Twitter, Facebook, Instagram, or any other third party platforms that support OAuth.

3. Sitecore xConnect


Sitecore has released a new service layer called xConnect for interacting with the Sitecore Experience Database (xDB).  xConnect provides a single, consistent REST API for searching, reading and writing xDB data.  If you want to capture customer interactions from a custom mobile app, xConnect is the way to do it.  Do you want to capture information from a point of sale system or IoT device?  xConnect is the way to do that too.  And you can be guaranteed that xConnect is not some half-baked, barely tested API, because everything that interacts with xDB must go through xConnect, including all of the foundational Sitecore code.  xConnect implements the oData protocol, providing a standards-based API that is easy to consume.  Also, because of the potentially sensitive nature of some of the customer experience data that is captured with xDB, xConnect requires SSL along with an explicit certificate-based handshake for any client to connect to it.

4. New Installation Framework

Sitecore has revamped the way installs are conducted with the release of the new Sitecore Installation Framework (SIF).  This new framework is built on top of Windows PowerShell, and provides a completely automated approach to installing and configuring all of your Sitecore instances.  This framework will set up the databases, search indexes, IIS application pool and web sites, install SSL certificates, and perform all of the necessary Sitecore configuration for you based on the type of installation you are performing.  All of the configuration is controlled by JSON files that define the various variables and parameters that go into your specific installation (database names, usernames and passwords, certificates, file locations, etc.).  This framework is designed to be extended and customized so that customers can incorporate additional capabilities into their own installation process, such accommodating specific provisioning and security hardening requirements.  One drawback to the new installation approach is that it is not as easy or user friendly as the old Sitecore installers (SIM or the Sitecore windows installation executable).  So while this may make things a little less intuitive for smaller organizations, it provides the power and flexibility to ensure consistent, secure and repeatable deployments for large enterprise installations without a lot of error-prone, manual installation procedures.

5. Rule-based Configuration

Sitecore has redesigned the way system configuration works with Sitecore 9.  The first thing you'll notice is that the App_Config\Include folder has no configuration files!  There's a new file in the App_Config folder called Layers.config that shows you exactly why.

  <layer name="Sitecore" includeFolder="/App_Config/Sitecore/">
      <add path="CMS.Core" type="Folder" />
      <add path="AntiCSRFModule" type="Folder" />
      <add path="PathAnalyzer" type="Folder" />
  <layer name="Modules" includeFolder="/App_Config/Modules/" />
  <layer name="Custom" includeFolder="/App_Config/Include/" />
  <layer name="Environment" includeFolder="/App_Config/Environment/" />

From this, you can see that Sitecore has created a new "layering" structure for the various configuration files, and that these are loaded in a specific order.  First, all of the "core" Sitecore configuration is loaded as part of the "Sitecore" layer, and these are all maintained in a separate folder.  Next, any Sitecore-provided or third-party modules will be loaded in the "Modules" layer with its own corresponding folder.  Then, any custom configuration is loaded from the currently empty "Include" folder as part of the "Custom" layer.  And lastly, any environment-specific configuration gets loaded as part of the "Environment" layer.  This approach makes it much easier to keep out of the box Sitecore configuration files separate from custom configuration.  Also, by defining specific folders for each layer, it makes it much easier to prevent one layer from "polluting" another layer with its content, making it much easier to maintain, troubleshoot and upgrade the platform.  No longer will you have to create folders with a prefix of "z." just to ensure that your custom configuration gets loaded prior to the Sitecore configuration.

In addition to the layer-based approach, Sitecore has also introduced the concept of role-based configuration.  Role-based configuration allows you to assign a specific server role to individual configuration nodes.  For example, you can define configuration settings specifically for content management, content delivery or processing servers without having to go through a lot of time-consuming and error prone steps of having to enable or disable various configuration files on each of those servers.  You can also define your own custom configuration roles and assign configuration information to those roles as needed.  This role-based approach provides a lot of flexibility, while also allowing for consistent, reapeatable, automated deployments.

Sitecore has also provided a new admin page (/sitecore/admin/showconfiglayers.aspx) that allows you to view all of the defined configuration layers, the config files included with each layer, the different configuration roles that have been defined, and allows you to define new roles.  It also provides the ability to select a specific role and preview the resulting configuration that would be generated for that type of server role.  This allows you to essentially validate any environment-specific configuration in a single development environment without having to actually deploy your configuration to another server.

6. Dynamic Placeholders

One of the biggest annoyances many developers had to deal with when building Sitecore solutions is the behavior of placeholders in the Experience Editor.  Placeholders are basically named content areas on a page that allow a content author to place a piece of content into.  However, if two placeholders with the same name appear twice on a page (responsive grid layouts are a good example), the content dropped into one of the placeholders will also appear in the second placeholder.  In the past, developers have had to rely on third-party solutions from the Sitecore Marketplace or custom solutions to address this problem.  Sitecore has paid attention to the most requested uservoice recommendation from the developer community and has now included an out of the box dynamic placeholder to address this issue.

7. MongoDB is no longer a requirement

There was a lot of excitement around the original release the Experience Database (xDB) with Sitecore 7.5.  However, it did present organizations with a number of challenges.  The foremost of these challenges was probably the technical requirement for MongoDB as part of the platform.  In addition to the pre-existing SQL Server database requirements, organizations suddenly had to support a second type of database as well.  Although MongoDB offered a free community addition that works well with Sitecore, many organizations found the need to purchase enterprise licenses of the software due to legal or technical requirements that weren't able to be satisfied with the community version.  Additionally, many IT organizations did not have the knowledge or experience to be able to install, configure and maintain a completely new type of database platform.  With the release of Sitecore 9, MongoDB is no longer a requirement for the platform.  As a matter of fact, MongoDB is surprisingly not yet supported with the initial Sitecore 9 release (but will be supported in an upcoming update release along with CosmosDB).  Sitecore now supports using SQL Server 2017 as the database for xDB.  This version of SQL Server provides the necessary level of capability for storing JSON structures in a noSQL type of manner that was not previously possible with SQL Server.  Now, organizations can leverage a single set of software and licenses for all databases required for the Sitecore Experience Platform, and can have the peace of mind knowing that they have the infrastructure and technical capability to be able to support it.

8. New Forms Module

One of the more exciting new capabilities for content authors with Sitecore 9 is the inclusion of a new Forms module.  Many of you are familiar with the Web Forms for Marketers (WFFM) module which was provided with previous Sitecore releases.  The new Sitecore Forms module is not just a refresh of WFFM, it is a completely new module designed and developed from the ground up as a replacement for WFFM, which will be deprecated in the future.  The goal of WFFM was to provide a user interface that would allow content authors the ability to create web forms for their site with little to no developer involvement.  While WFFM was able to achieve those goals to some degree, the UI was very clunky, the module seemed to be very error prone at times, and did not lend itself well to more advanced data capture scenarios.  The new Sitecore Forms module addresses all of those issues.  The module provides a nice, clean user interface with drag and drop capability for creating forms.  The forms module also provides support for wizards to allow data capture over multiple pages in sequence, something that was never possible with WFFM.  Also, this forms module is included automatically with the Sitecore install, so it is no longer an add-on module like WFFM was.  

9. No more Silverlight!

If you've used Sitecore for any extended period of time, you've probably experienced the frustration of trying to create an engagement plan or access the Sitecore App Center and gotten that annoying message that you cannot access that functionality unless you install and enable Silverlight in your browser.  I've had a number of situations where I needed to enable device detection or Geo IP lookup capabilities from the App Store and was unable to do so because I wasn't permitted to install Silverlight on production hardware.  Sitecore has finally removed all of their dependencies on the Silverlight plugin and has replaced it entirely with JavaScript and native browser capabilities.  This may not seem like a major announcement, but I think any barrier that prevents a customer from leveraging the full power of the platform is a concern, and Sitecore has finally eased some of these long standing concerns.


About The Author

Practice Manager
Justin is one of the Application Development Practice Managers for the Cincinnati office and is Cardinal's national Sitecore lead.  Justin has over 20 years of consulting experience in a variety of roles including developer, architect, certified instructor and scrum master.