Skip to content
This is an Open Source add-on that improves the reviewing process and lets external users to view & review content without the need to access the Edit Mode. We are now in BETA, there may still be issues. Contributors are welcome.
C# TypeScript JavaScript HTML CSS ASP Other
Branch: master
Clone or download
Latest commit 0a3e656 Aug 13, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.

Advanced CMS

Advanced Reviews

This project is a set of useful enhancements that may gradually improve the reviewing process in organizations using EPiServer as their CMS.

It solves a few major issues the Authors identified during their journey with EPiServer and after working on a number of EPiServer related enterprise solutions.

The list of features (click to see more details about each section):

See it in action:

Advanced Reviews


Install-Package Advanced.CMS.AdvancedReviews


Preview unpublished content

Allow editors to preview unpublished and unreviewed content.

As we all know, an EPiServer page is usually not self-contained but rather consists of many other content items like blocks or media files.

In such scenarios it is very hard for reviewers to see the "big picture". Let's say a page consists of several blocks and a few images. Now, in case the page author changed all those blocks and images the reviewer will have to manually go through all of them and approve them individually without, in fact, being able to see those changes in the actual page context.

This project gives the editors a way to generate a unique URL that will present the page exactly as they see it. The preview engine will ignore content status and the content approval process.

Preview unpublished content

Context aware smart reviewing

In the current workflow, the reviewer can just provide a single comment that has to include all comments for a particular content version. Then, it is the editor's responsibility to match the issues raised by the reviewer with specific parts of the page.

This project aims at moving the comments closer to the specific page fragments which will help editors to understand & fix the issues faster. Pin review 1

You can also take screenshots of your page and highlight specific parts to make it clear to the editor what the concern is. Pin review 2

It is also important to set the priority to each comment to make it clear to the editor which comments are important and which ones are just cosmetic or optional. Pin review 3

After receiving such comments the author of the content will see all issues raised by the reviewer.

Pin answer 1

The author can respond to each of them individually by adding a reply message or attaching another screenshot with explanations.

Once a Pin is reviewed it can be marked as Resolved

Pin answer 2

All pins are saved and can be reviewed at any time in a dedicated Review pane.

Pin answer 3

Integration with default approval workflow

Let's say we configure a very basic approval workflow with a single approval step and a single reviewer.

We will also force the reviewer to provide a comment when either approving or declining the changes. Configure approval

Later on, an editor decides to send the page for review. Approval 1

The reviewer can now use Pins to comment on specific parts of the page and use those comments to populate the Decline message Approval answer

If the reviewer ever tries to approve content that still has some unresolved Pins, a prompt will be shown. Approval prompt

Each pin is in fact a standalone Thread the can go on until both Reviewer and the Author are satisfied with the end result.

External reviewers

This feature is a combination of the previous ones. It is to allow external reviewers, so the user that may not be a part of your organization, or simply users who are reluctant to learn EPiServer to access unpublished data and provide feedback if needed.

Expirable token based urls

All generated links are token-based. You can generate as many links as needed, each of them can be revoked at any time.

Additionally, all urls are time limited (the TimeSpan can be configured, please look further down) which means that after a specific amount of time such link will no longer work.

Visual content reviews

You can visually express issues in reviewed content by highlighting or adding screenshots

Once you decide to attach a screenshot then we will automatically determine the dimensions of the EPiServer property that was clicked on and preselect it. The default crop can be changed according to your needs.

The highlighting tool allows you to clear and redraw.

Screenshot manipulation

External reviews

Allow to display draft content version without logging to Episerver.

External review component

This is an Edit mode component used to generate external review links. There are two types of links:

  • view - external reviewer can preview draft content version
  • editable - external reviewver can add comments using advanced review widget

External review links component

Share dialog

Editor can share external review links using share dialog. The [#link#] constant will be replaced with link to content.

External review share dialog

Below is an email example:

External review email example


/externalContentReviews location is only accessible to users who are members of the ExternalReviewers role. You will have to manually add personal user accounts or a shared user account that could be used by the external reviews.


There are few settings related with external review. They are all set using Options class:

Option Default Description
ContentPreviewUrl externalContentView path prefix added before token for "View" preview links
ReviewsUrl externalContentReviews path prefix added before token for "Edit" review links
EmailSubject [subject email template] email subject template
EmailEdit [email template] email body template used for readonly content links
EmailView [email template] email body template used for editable links
EditableLinksEnabled false When true then Editor can create editable links that allow external reviewers to add comments
ViewLinkValidTo 5 days For how long view link is valid
EditLinkValidTo 5 days For how long editable link is valid

In order to add those options you would have to add a new InitializableModule. This snipped turns on editable review links:

public class ExternalReviewInitialization : IInitializableModule
    public void Initialize(InitializationEngine context)
        // Editable external review links are turned off by default
        ServiceLocator.Current.GetInstance<ExternalReviewOptions>().EditableLinksEnabled = true;

    public void Uninitialize(InitializationEngine context)

    public void Preload(string[] parameters)

For contributors

This is our personal project that we intend to maintain.

If you would like to contribute in any way, create a new feature, fix a bug or help with the documentation then we would really appreciate any kind of contributions.

Development (if you would like to help in development)

$ setup.cmd
$ site.cmd

And your IISExpress Alloy with all dependencies should be up and running.

There are a few more useful commands like:


which builds both C# code and bundles all javascript dependencies, and


that creates a nuget package.

You can’t perform that action at this time.