Take the community feedback survey now.

Rajveer Singh
Jul 1, 2025
  626
(3 votes)

Environment-specific badges in the Optimizely CMS

Step 1: Add Environment Info to the UI

Create a custom UIDescriptor and a ComponentDefinition to inject a badge into the CMS UI.

using EPiServer.Shell;
using EPiServer.Shell.ViewComposition;

[UIDescriptorRegistration]
public class EnvironmentBadgeUIDescriptor : UIDescriptor
{
    public EnvironmentBadgeUIDescriptor()
        : base("environment-badge")
    {
        DisabledViews = new string[] { };
    }
}

 

Step 2: Add a Client Resource

Create a JavaScript file that will render the badge in the CMS UI.

define([
    "dojo/_base/declare",
    "epi/_Module",
    "dojo/dom-construct",
    "dojo/domReady!"
], function (declare, _Module, domConstruct) {
    return declare([_Module], {
        initialize: function () {
            this.inherited(arguments);

            var env = window.cmsEnvironment || "Production";
            var color = {
                Development: "#007bff",
                Staging: "#ffc107",
                Production: "#28a745"
            }[env] || "#6c757d";

            var badge = domConstruct.create("div", {
                innerHTML: env,
                style: `
                    position: fixed;
                    top: 10px;
                    right: 10px;
                    background-color: ${color};
                    color: white;
                    padding: 5px 10px;
                    font-weight: bold;
                    border-radius: 4px;
                    z-index: 9999;
                `
            }, document.body);
        }
    });
});

 

Step 3: Register the Module in module.config

<module>
  <clientModule initializer="environment-badge">
    <requiredResources>
      <add name="epi.shell" />
    </requiredResources>
  </clientModule>
</module>

 

Step 4: Set the Environment in Razor or Layout

In your _Layout.cshtml or a shared Razor view:

<script>
    window.cmsEnvironment = '@Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")';
</script>

 

 

When editors log into the CMS, they’ll see a badge in the top-right corner showing the current environment, color-coded for clarity.

 

Jul 01, 2025

Comments

huseyinerdinc
huseyinerdinc Jul 2, 2025 07:16 AM

Nice idea. Would you mind posting a screenshot of the result?

Rajveer Singh
Rajveer Singh Jul 2, 2025 07:22 AM

Updated the screen shot what we achieved.

Eric Markson
Eric Markson Jul 8, 2025 01:38 PM

The image looks broken. Can you please try and upload it again

Please login to comment.
Latest blogs
Optimizely CMS Mixed Auth - Okta + ASP.NET Identity

Configuring mixed authentication and authorization in Optimizely CMS using Okta and ASP.NET Identity.

Damian Smutek | Oct 27, 2025 |

Optimizely: Multi-Step Form Creation Through Submission

I have been exploring Optimizely Forms recently and created a multi-step Customer Support Request Form with File Upload Functionality.  Let’s get...

Madhu | Oct 25, 2025 |

How to Add Multiple Authentication Providers to an Optimizely CMS 12 Site (Entra ID, Google, Facebook, and Local Identity)

Modern websites often need to let users sign in with their corporate account (Entra ID), their social identity (Google, Facebook), or a simple...

Francisco Quintanilla | Oct 22, 2025 |

Connecting the Dots Between Research and Specification to Implementation using NotebookLM

Overview As part of my day to day role as a solution architect I overlap with many clients, partners, solutions and technologies. I am often...

Scott Reed | Oct 22, 2025