⚙️ Installation & Configuration
Addons Management
📖 Docs

Add-ons Management - Optimizely CMS 12

Exam Area: Area 2 – Installation, Operation & Configuration (20%)


1. Add-ons in CMS 12

Add-ons are NuGet packages that extend CMS functionality:


2. Installing an Add-on

# Via .NET CLI
dotnet add package EPiServer.Forms
dotnet add package EPiServer.Find

# Via Package Manager Console
Install-Package EPiServer.Forms

3. Registering Add-on Services

// Program.cs - Register the add-on
builder.Services.AddOptimizelyForms();
builder.Services.AddFind();  // EPiServer.Find

// Or in IConfigurableModule
public class AddOnConfigModule : IConfigurableModule
{
    public void ConfigureContainer(ServiceConfigurationContext context)
    {
        context.Services.AddOptimizelyForms();
    }
}

4. module.config

<!-- Modules typically include a module.config -->
<?xml version="1.0" encoding="utf-8" ?>
<module>
  <assemblies>
    <add assembly="EPiServer.Forms" />
  </assemblies>
  <clientResources>
    <add name="EPiServer.Forms.ClientResources.View" 
         resourceType="Script" 
         path="ClientResources/Scripts/EPiServer.Forms.js" />
  </clientResources>
</module>

5. Admin UI - Add-ons

Admin → Add-ons
  → List of installed add-ons
  → Version information
  → Links to configuration
  → (Legacy: Online add-on catalog - CMS 11)

6. Client Resource Registration

// Use IRequiredClientResourceList to add client resources from an add-on
[InitializableModule]
public class AddOnResourcesModule : IInitializableModule
{
    public void Initialize(InitializationEngine context)
    {
        var resourceList = context.Locate.Advanced
            .GetInstance<IRequiredClientResourceList>();
        
        resourceList.RequireScript("~/addons/my-addon/scripts.js").AtFoot();
        resourceList.RequireStyle("~/addons/my-addon/styles.css");
    }
    
    public void Uninitialize(InitializationEngine context) { }
}

7. Uninstalling Add-ons

# Remove the NuGet package
dotnet remove package EPiServer.Forms

# Cleanup steps:
# 1. Remove the package reference
# 2. Remove service registration from Program.cs
# 3. Remove from module.config
# 4. Clean up DB tables if needed (manual)

Review Questions

  1. How are add-ons installed in CMS 12? (Via NuGet packages)
  2. After installing the NuGet package, what is the next step? (Register services in Program.cs)
  3. What is IRequiredClientResourceList used for? (Registering CSS/JS from an add-on)
  4. What information does module.config contain? (Assembly references and client resources for the module)
  5. Where can you view installed add-ons? (Admin → Add-ons)