New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact .

The use of the Community Blog is covered by our Community Blog Guidelines - please read before commenting or posting.

PolyDeploy: Painless Module Deployments for DNN

At Cantarus we deal with several large DNN websites and develop custom solutions containing large numbers of modules. We found the deployment process to Live DNN Websites with solutions of this size to be overly cumbersome so we created a new deployment platform, PolyDeploy.

PolyDeploy aims to bring deployment convenience back to DNN developers so that deployments can once again be quick and easy. In addition, we aim to add additional improvements to allow more flexible deployment solutions. This includes remote and automated deployments that can be performed by your continuous integration solution to help streamline the development process.

Why we Created PolyDeploy

Seasoned DNN developers will no doubt have experience of installing many modules at once by placing their module install files in the [websiteroot]/Install/Module/ directory and calling [domain]/Install.aspx?Mode=InstallResources. It was the only efficient way to install many modules together while avoiding multiple AppPool restarts.

This was not 100% reliable and getting feedback on failed deployments from an automated process was difficult. It was therefore difficult to use install.aspx as part of a continuous delivery pipeline.

Unfortunately, due to a security exploit within Install.aspx it is now removed after the installation of DNN is complete. This leaves the installation of large numbers of modules a tedious and time consuming task, fraught with possible human error such as modules being missed or installed out of order.

PolyDeploy aims to provide stress free automated or manual deployments that incur less downtime, are secure from end-to-end and are fully auditable.



PolyDeploy has been architected with security in mind from the very beginning. There are multiple mechanisms in place to prevent the unauthorised use of PolyDeploy to defend against attackers deploying modules. PolyDeploy combines several security mechanisms into a comprehensive security strategy. These measures include:

  • IP Whitelisting
  • Host Only User Interface
  • API Key Authentication
  • Encryption of Traffic

Local or Remote Deployments

PolyDeploy can be used in two logically distinct modes:

Using the Integrated UI on the website. This allows installation of modules as part of attended deploys and effectively replaces the in-built DNN Extension installation wizard. This UI also provides management settings for key generation, IP whitelisting and the PolyDeploy event log.

Using a Local Client to upload modules remotely. PolyDeploy comes bundled with a command line tool that can be used as part of a CI/CD process, module build change or via the command line from any remote computer that has been IP whitelisted. Due to its remote nature the local client is subject to more stringent security protocols.

Dependency Detection

When you upload modules through PolyDeploy, it examines the modules' dependencies and ensures that they can be met. Dependencies are checked against modules that are already installed as well as modules that are included as part of the current deployment session. PolyDeploy is also able to detect circular dependencies in modules and will prevent a deployment from starting if a circular dependency is found.

During the dependency checks, modules in the deployment session are placed into a suitable installation order. Modules will only be installed after the modules they depend on have been installed. For example, if I add Module A and Module B to a deployment session and Module B has a dependency on Module A, PolyDeploy will make sure that Module B is installed before Module A during the deployment.


PolyDeploy logs events to the DNN Event Log and its own separate log, this is combat the clearing of the DNN EventLog in the event of an attacker gaining access to the system. PolyDeploy logs all sessions, module installs, attempted module installs, authentication or encryption failures when using the API. This gives administrators notice that their DNN instance is under attack.


At Cantarus we have been using PolyDeploy for several months and have seen an observable reduction in downtime, an average of 50% in the overall deployment process and a 10x decrease in module installation time over installing each module individually.

We have also been able to use continuous delivery to streamline our development and testing processes. Using PolyDeploy as soon as a development task is finished it is built, tested and deployed to a staging environment where it can be immediately tested rather than being eventually deployed as part of a bundle. This ensures that even if an issue fails testing, it fails quickly and can be passed back to the developer while it is fresh in their mind.

Donation to the Community

We are donating PolyDeploy to the Open Source DNN community because we believe that the entire community can benefit from a secure and reliable deployment process. To echo the messages conveyed at DNN Summit recently we view the DNN Community as key in keeping the entire DNN ecosystem thriving.

Poly Deploy is available, free of charge, on GitHub and soon on the DNN Store.


Clint Patterson
Such a great contribution to the community! Thanks Cantarus and team for a well thought out extension and the great info provided on your site and on GitHub about this. I think it would be a great addition to the core.
Clint Patterson Tuesday, March 13, 2018 2:09 AM (link)
Sebastian Leupold
sounds great! Thank you very much!
Sebastian Leupold Tuesday, March 13, 2018 8:52 PM (link)
Daniel Mettler
Way to go! I love it, when I see something thought out so well.
Daniel Mettler Wednesday, March 14, 2018 6:35 AM (link)

Comment Form

Only registered users may post comments.


Aderson Oliveira (22)
Alec Whittington (11)
Alessandra Davies (3)
Alex Shirley (10)
Andrew Hoefling (3)
Andrew Nurse (30)
Andy Tryba (1)
Anthony Glenwright (5)
Antonio Chagoury (28)
Ash Prasad (37)
Ben Schmidt (1)
Benjamin Hermann (25)
Benoit Sarton (9)
Beth Firebaugh (12)
Bill Walker (36)
Bob Kruger (5)
Bogdan Litescu (1)
Brian Dukes (2)
Brice Snow (1)
Bruce Chapman (20)
Bryan Andrews (1)
cathal connolly (55)
Charles Nurse (163)
Chris Hammond (213)
Chris Paterra (55)
Clint Patterson (108)
Cuong Dang (21)
Daniel Bartholomew (2)
Daniel Mettler (181)
Daniel Valadas (48)
Dave Buckner (2)
David Poindexter (12)
David Rodriguez (3)
Dennis Shiao (1)
Doug Howell (11)
Erik van Ballegoij (30)
Ernst Peter Tamminga (80)
Francisco Perez Andres (17)
Geoff Barlow (12)
George Alatrash (12)
Gifford Watkins (3)
Gilles Le Pigocher (3)
Ian Robinson (7)
Israel Martinez (17)
Jan Blomquist (2)
Jan Jonas (3)
Jaspreet Bhatia (1)
Jenni Merrifield (6)
Joe Brinkman (274)
John Mitchell (1)
Jon Henning (14)
Jonathan Sheely (4)
Jordan Coopersmith (1)
Joseph Craig (2)
Kan Ma (1)
Keivan Beigi (3)
Kelly Ford (4)
Ken Grierson (10)
Kevin Schreiner (6)
Leigh Pointer (31)
Lorraine Young (60)
Malik Khan (1)
Matt Rutledge (2)
Matthias Schlomann (16)
Mauricio Márquez (5)
Michael Doxsey (7)
Michael Tobisch (3)
Michael Washington (202)
Miguel Gatmaytan (3)
Mike Horton (19)
Mitchel Sellers (40)
Nathan Rover (3)
Navin V Nagiah (14)
Néstor Sánchez (31)
Nik Kalyani (14)
Oliver Hine (1)
Patricio F. Salinas (1)
Patrick Ryan (1)
Peter Donker (54)
Philip Beadle (135)
Philipp Becker (4)
Richard Dumas (22)
Robert J Collins (5)
Roger Selwyn (8)
Ruben Lopez (1)
Ryan Martinez (1)
Sacha Trauwaen (1)
Salar Golestanian (4)
Sanjay Mehrotra (9)
Scott McCulloch (1)
Scott Schlesier (11)
Scott Wilkinson (3)
Scott Willhite (97)
Sebastian Leupold (80)
Shaun Walker (237)
Shawn Mehaffie (17)
Stefan Cullmann (12)
Stefan Kamphuis (12)
Steve Fabian (31)
Steven Fisher (1)
Tony Henrich (3)
Torsten Weggen (3)
Tycho de Waard (4)
Vicenç Masanas (27)
Vincent Nguyen (3)
Vitaly Kozadayev (6)
Will Morgenweck (40)
Will Strohl (180)
William Severance (5)
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out