Every now and then I have the urge to take stock (FOMO), and make sure I'm not ignorant to some ubiquitous resource, or life changing development tool. The trigger in this instance, has been the recent overhaul of EpiServer World.
EpiServer, like all Digital Experience Platforms, comes with some common, and some unique development challenges. The following is a collection of Epi Specific resources that I've found along the way. Some were discovered in Epi training sessions, some during debugging sessions with colleagues, and a healthy percentage of these resources are community & partner contributions that were surfaced by the job creation engine known as Google.
An easy one to begin, and one that every Epi developer will be familiar with. So, I'll try to add some context around where I see value in using these resources directly, as an alternative to simply Googling "EpiServer…" and hoping for contextual relevancy.
Home to Epi's developer documentation for current and past versions of the platform. Their documentation often Includes code examples to help convey intent. Documentation is provided for their entire product suite: CMS, Commerce, Find, Campaign, Reach etc. For a deeper dive you can also access their Class Library documentation.
But that’s just a small piece of the resource pie. EPiServer World's real value is in the practical guidance on offer.
- Get Started Guides - Help you to take your first steps with Epi Server using the Alloy (CMS) and Quicksilver (Commerce) demo sites.
- Community Forum - A great place to uncover best practices and peer reviewed solutions to common questions.
- Blog, learn about the latest EpiServer features and solutions shared by EPiServer developers and EMVP's.
- Release History, including documented breaking changes, to help with those major version upgrades.
EpiServer Web Help
At first glance Epi's Web help is geared more towards business users - Content Editors and Marketers. With blow by blow tutorials on everything from logging in, to creating cool things, like Marketing Automation triggers.
As a developer I often find myself returning to Web Help to get an overview of a feature release, or to remind myself of where a CMS setting is hiding.
It can also be a helpful when you need to share information with a non-technical audience. Web Help is a good reference to use when attempting to align expectations between business/functional groups.
EpiServer Knowledgebase (KB)
EpiServers KB is linked to from the EpiServer support site, but not currently integrated.
It provides a useful Problem Statement -> Resolution format and documents an array of topics that at one point or another have been raised as support requests.
It receives its own mention as it doesn’t currently seem to be integrate with the Epi world search index, you may find results indexed in google, but generally documentation from Epi world will rank higher on Google for Epi related queries.
Combined with Epi's fortnightly bug/patch releases, the KB is a very useful open feedback loop, and helps the collective developer community to patch bugs in their own solutions earlier.
For those occasional projects that don't offer an infinite timeline and budget, it's important to know which of the complicated problems have already been solved. The main reference for this list can be found here https://world.episerver.com/add-ons/.
It contains both verified and open source contributions. Some addons are subscription based, others are licensed perpetually, but all should save you time and money during implementation.
Epi's Addon list isn't exhaustive, and there are other community sources that I'll get to later, but for the most part, the most common integration scenarios are covered (Marketing Automation, PIM, DAM, CRM).
Full disclosure - as an EpiServer partner, Aware have several EpiServer Addons, listed here, and more to come. If you have a unique integration scenario not currently covered, we'd love to hear from you.
At first glance Epi's public GitHub channel seems to be a random collection of experiments. For the most part these aren't all packaged as Addons. They generally have more in common with Proof of Concepts and Demos, than polished production modules - and that’s actually what makes them such a great resource.
Each repo exists to highlight a feature, demo an integration, or solve a problem. However, I've found that the real value isn’t necessarily in their intended application, it's that they (for the most part) have been developed by EpiServer architects, exposing techniques and approaches that would be difficult to extract from the documentation alone.
The code examples and integration approaches published here have helped to stretch my understanding of the Epi APIs, and how we can extend and enhance the platform and the UI. If a picture paints a thousand words, then an Epi maintained Git Repo should at least count for a few hundred.
Not so much a reference in the traditional static sense, instead this would be considered a dynamic reference for a site’s runtime context.
EpiServer ships with a collection of runtime reporting tools, that are both quite well hidden, and disabled by default.
You can easily enable them with the addition of
to the appSettings section in your web.config file. Using configuration transforms is a good way to limit access to select environments.
Security-wise, they live in the _protected modules folder. You will need to be logged in with 'Administrator' role access to actually run the reports, so they aren't publicly accessible.
Lists out all registered initialization modules.
Lists out the menu items used to construct the top-level menu.
Lists out all routes in your RouteTable.
Lists out all configured ShellModules.
Lists out the file versions used in your application (useful if you need to know exactly what assembly versions you have in your solutions).
Lists out the initialisation modules and the time it takes to initialize each one.
Lists all implementations in the underlying StructureMap container.
List out all registered view engines in your site.
There is discussion around how safe these scripts are to run in production, when in doubt we would advise against enabling this setting for production deployments.
The DeveloperTools Addon shares a lot of features with the /Shell/Debug reports we covered previously. The Addon has its own repo on the Epi GitHub feed, and is published to Epi's NuGet feed for easy installation.
They also provide a convenient developer tab in the editing interface… so no need to go hunting for hidden scripts with this solution. Their readme lists the following features…
- View contents of the StructureMap container
- View Log4net logs (based on in-memory appender)
- View Content Type sync state between Code and DB
- Take memory dumps
- View templates for content
- View and test ASP.NET routes
- View loaded assemblies in AppDomain
- View startup time for initialization modules
- View remote event statistics, provider and servers
- View all registered view engines
It's listed as Experimental (imagine all caps with an aggressive font), so for this reason we would advise against installing this to any branch connected to your main build pipeline. However, we would encourage you to stand up a new Alloy demo instance and take DeveloperTools for a spin.
EpiServer Alloy Demo
For most developers this will be their first interaction with EpiServer development constructs. For this reason, it's probably the most used reference when it comes to current and relevant code samples.
EpiServer provide a Visual Studio extension to simplify installation, and a set of base templates to assist with Block and Page creation.
More importantly Epi's Alloy demo website is an evolving reference. as new versions of EpiServer are released new versions of Alloy are published to show off the latest features. To get the latest packaged version you simply need to update the VS extension.
There's also a vast collection of partner and community resources available online. These are the unofficial resources where developers share their implementation experiences through personal blogs and open source channels like GitHub.
The Epi developer community contains a lot of developer bloggers, many of which also syndicate their content to the EPiServer world blog which you should already be subscribed to.
Others further support the Epi Developer community by releasing their own open source packages and code samples. At the time of writing, a search on GitHub for EpiServer returns over 750 repositories.
Epi's Annual Ascend Event is a chance to hear from the Epi Development team directly, gain insight in to Epi's product vision, the current version roadmap, and deep dive into their next quarter and recently released features.
Specifically, for developers, there's Epi's Code Bash - a team based coding challenge, certification exams for new and seasoned developers.
So that’s every type of Epi reference known to this developer, and yes, I have consciously stretched the definition of 'Reference' along the way to get to '10'. Still, I hope it proves useful to developers new to the EpiServer platform.