DNN is Very Extensible

DNN lets you add functionality, change presentation, and plug into the platform with reusable extensions. Build modules and themes, register JavaScript libraries, create providers, schedule background jobs, and more—then package and deploy with a manifest.

Modules Themes & Containers Providers JavaScript Libraries Scheduled Jobs Libraries Persona Bar Plugins

What you can extend

The most common DNN extension types you’ll work with.

Modules

Feature blocks users see on pages. Ideal for app-like functionality, dashboards, forms, and content apps.

  • Visible on pages • Role permissions
  • Supports WebForms/MVC/SPA patterns
  • Packs with a .dnn manifest

Themes & Containers

Control page layout (theme) and per-module chrome (container) for brand-ready presentation.

  • Site/global defaults + per-page overrides
  • Ship CSS/JS and skin objects
  • Installed via .zip with manifest

Providers

Replace or extend platform services (auth, URLs, caching, folders, search, logging, etc.).

  • Abstract & concrete provider model
  • Configured in web.config or admin UI
  • Great for cross-site services

JavaScript Libraries

Register shared JS frameworks once so multiple extensions can request them without duplicate loads.

  • Central versioning & load settings
  • Works with Client Dependency

Scheduled Jobs

Run code on a schedule (indexing, syncs, housekeeping) with per-job intervals and targeting.

  • Runs via DNN Scheduler
  • Host-level control and logs

Libraries

Shared DLLs/APIs consumed by other extensions (e.g., shared services, utilities, or provider implementations).

  • Versioned like other packages
  • Install once, reuse everywhere

Persona Bar Plugins

Extend the admin experience with custom panels/tools in the control bar.

  • Great for site management UIs
  • Often pairs with modules/APIs

Skin Objects

Theme-embedded components (e.g., search, breadcrumb) that render in layout without per-module settings.

  • Configured in theme code
  • Compliments themes/containers

Core Providers

Popular provider targets include Friendly URLs, Output/Module caching, Search Index/DataStore, and Folder storage.

Swap defaults with your own concrete provider when needed.

Provider extension points (high level)

Replace or add login/registration flows (OAuth/OIDC, SSO, corporate directories) safely via the provider model.

Control how URLs are generated, routed, and displayed. Useful for dynamic content, SEO, and multi-language.

Override how content is cached/invalidated (e.g., Redis, distributed cache). Critical in farms and high-traffic sites.

Point file storage to other backends (e.g., Azure, S3-style, network shares) transparently to editors.

Swap underlying services to match enterprise needs (e.g., centralized users/roles, external logging, custom sitemaps).

Start building

Use community templates to scaffold modules, themes, Persona Bar plugins, and more.

About Extensions (Docs)

Overview, types, and how to install & apply extensions in DNN.

Development templates

Visual Studio and Yeoman generators for Module, Theme, Persona Bar, Library, Scheduled Job, and more.

  • Christoc / DNN 8 templates
  • Yeoman generators (generator-dnn, generator-upendodnn)
  • VS integrated templates

Tip: check the DNN Store and GitHub first—your need may already exist.

Package & install

Extensions install from a zip that includes your files and a .dnn manifest.

  1. Author a manifest (.dnn) describing components, files, and install steps.
  2. Zip your payload + manifest into a package.
  3. Install via Settings → Extensions → Install Extension (host permissions).
  4. Enable/assign where needed (e.g., Premium, Deploy permissions).

Manifests control what gets installed, versioning, and uninstall behavior.

Good to know
  • Only files listed in the manifest are installed.
  • Use components like ResourceFile to bundle assets.
  • Non-existent files in the manifest will cause install errors.

API & services at a glance

Access DNN services (users, roles, permissions, logging, scheduler, search, etc.) and register services at startup.

  • Startup: implement IDnnStartup to wire up DI services when your package loads.
  • Scheduler: create jobs for recurring tasks with host-level controls and logs.
  • Client Dependency: manage script & style loading, including JS Library entries.

You can add themes to change the look and feel. You can add modules to add functionality. But you can also add providers to login using social media or your credentials of your office network.

There are several ways to get what you want:

  1. Shop till you drop on https://store.dnnsoftware.com/
    Note worthy is that the DNN store does not just offer another caroussel or calendar. Several vendors off solutions that allow you to create your own application, even if you are not a dev guru. If that's way over your head, you can still buy a caroussel as well ;-) 
  2. Create your own extensions. More on this can be found on https://dnndocs.com/content/features/extensibility/extensions/index.html

But it doesn't stop there. If you just want to leverage the users/roles/permissions of DNN but don't want any of the other stuff, you can do that too. DNN has an extensive API to use whatever you need and whenever you need it.

Would you like to help us?

Awesome! Simply post in the forums using the link below and we'll get you started.

Get Involved