Downgrading from Evoq Content or Engage to Evoq Basic

Overview

Evoq comes in multiple versions. Evoq Basic is the core version, having the fewest features. Evoq Content adds content management features to the Basic framework. Evoq Engage starts with the Content feature set and adds social and gamification features. Because each is built on the last, upgrading from Basic to Content or Engage is fairly straightforward: the upgrade package just adds in the necessary features.

 

Downgrading from Engage or Content to Basic, however, can be much more difficult. Because your site content may rely on features specific to Engage or Content, downgrading involves examining site functionality and determining whether downgrading may affect your site’s day-to-day operations. If so, it will be up to you to migrate your content away from those features (or find a third-party module alternative) before beginning the downgrade process.

 

In general, downgrading is not a recommended procedure. If you decide you need to downgrade, we recommend you make a full backup of the site and test the procedure thoroughly in a staging environment before moving it to production.

 

Prerequisites

  • Access to the DNN file system, IIS, and SQL server
  • Access to a Super User account
  • Knowledge of XML and SQL is helpful but not necessary

 

Solution

Before moving on to the downgrade process, you will need to assess whether your site content uses any of the following modules. These modules are NOT supported in Evoq Basic:

  1. Activities
  2. Activity Stream
  3. Answers
  4. Blogs
  5. DDR Menu*
  6. Discussions
  7. Evoq MailChimp List Signup*
  8. Forms*
  9. Group Directory
  10. Group Spaces
  11. HTML Editor Management*
  12. HubSpot Forms*
  13. Ideas
  14. Leaderboard
  15. Marketo Forms*
  16. My Status
  17. Profile Dashboard
  18. Publisher*
  19. Related Content
  20. Social Events
  21. Social Sharing
  22. User Badges
  23. Visualizer*
  24. Wiki
  25. Zendesk Tickets
  26. All Liquid Content*

*Bold items are used by Content and Engage, all others are used by Engage only.

 

You can run the following query in the SQL Console or SSMS to find out where these modules are being used on your site:

select tabmodules.TabID, TabModuleID, tabmodules.ModuleID,tabs.tabname as PageName
,tabmodules.PaneName, friendlyname as ModuleName from modules

 join moduledefinitions on moduledefinitions.moduledefid = modules.moduledefid
 join tabmodules on tabmodules.moduleid = modules.moduleid
 join tabs on tabs.tabid=tabmodules.tabid
where friendlyname in
('Activities','Activity Stream','Answers','Blogs','DDR Menu','Discussions'
,'Evoq MailChimp List Signup',
'Form','Group Directory','Group Spaces'
,'HTML Editor Management','HubSpot Forms','Ideas','Leaderboard',

'Marketo Forms','My Status','Profile Dashboard','Publisher'
,'Related Content','Social Events',
'Social Sharing','User Badges'
,'Visualizer','Wiki','Zendesk Tickets')

 

Once you’ve ensured your site content has migrated away from these features, you're ready to start the downgrade process. This is a rough sketch of the process:

  1. Create a working copy of the site. This will later be shifted over to become your new production site.
  2. Perform the downgrade operation
    1. Remove all non-Basic modules, PersonaBar, and Library packages
    2. Alter web.config
    3. Remove Enterprise DLL files
    4. Execute SQL queries to remove menu items
    5. Remove and replace the license
  3. Upgrade to a newer version of Evoq Basic (e.g. 9.4.4 to 9.6.4) to ensure all library files pertain to Basic.
  4. Check log files for any errors and address them.
  5. The downgraded site can now be moved back to production

Create a working copy of the site

To do this, follow the instructions in Moving a Site to Another Server. The license type on this copy should be set to Development until the downgrade and move back to production are complete.

 

Remove all non-Basic modules via the UI

Before removing the modules from your site, you should have already manually addressed all instances of your content that use these modules. No remaining content on your site should be using deleted modules. To delete these modules from your site:

  1. Navigate to PersonaBar > Settings > Extensions > Installed Extensions
  2. Under the Showing drop-down, select Modules
  3. Delete the following modules using the bin icon next to the module listing:
    • Activities
    • Activity Stream
    • Answers
    • Blogs
    • Discussions
    • Evoq MailChimp List Signup
    • Form
    • Group Directory
    • Group Spaces
    • Ideas
    • Leaderboard
    • Marketo Forms
    • My Status
    • Profile Dashboard
    • Related Content
    • Social Events
    • Social Sharing
    • User Badges
    • Visualizer
    • Wiki
    • Zendesk Tickets
  4. Select Libraries on the Showing drop-down and delete the following libraries:
    • Form Builder Structured Content Connector
    • Structured Content HtmlPro
  5. Select PersonaBar on the Showing drop-down and delete the following PersonaBar packages:
    • Evoq.PersonaBar.CommunityAnalytics
    • Evoq.PersonaBar.CommunitySettings
    • Evoq.PersonaBar.Gamification
    • Evoq.PersonaBar.Microservices
    • Evoq.PersonaBar.PageAnalytics
    • Evoq.PersonaBar.StructuredContent

Some of the modules may show as in-use despite successfully removing all content using them from your site. This is the result of a database flag and can be ignored.

 

Alter web.config

In the root folder of your site, find the web.config file. Always back up the web.config file before editing. Using a text editor, make the following changes:

  1. Find and remove the line referencing "Services.Endpoints.Registry." The default line looks like this:
    • <add key="Services.Endpoints.Registry" value="https://dnnapi.com/registry" />
  2. Change the line under <modules> referencing "Licensing." The line should be:
    • <add name="Licensing" type="DotNetNuke.Professional.HttpModules.LicenseValidatorModule, DotNetNuke.Professional" preCondition="managedHandler" />
  3. Remove the following lines referencing non-Basic modules:
    • <add name="GoogleTagManager" type="Evoq.GoogleTagManagerConnector.TagManagerModule, Evoq.GoogleTagManagerConnector" preCondition="managedHandler" />
      <add name="Marketo" type="Evoq.MarketoConnector.HttpModules.MarketoModule, Evoq.MarketoConnector" preCondition="managedHandler" />
      <add name="EvoqAnalytics" type="Evoq.Analytics.AnalyticsModule, Evoq.Analytics" preCondition="managedHandler" />
      <add name="EvoqSocialTracking" type="DotNetNuke.SocialLibrary.Components.HttpModules.UrlTrackingModule, DotNetNuke.SocialLibrary" preCondition="managedHandler" />
      <add name="SocialAnalytics" type="DotNetNuke.Professional.Analytics.HttpModule, DotNetNuke.Professional.Analytics" preCondition="integratedMode" />
  4. Remove the following code blocks referencing non-Basic assembly dependencies:
    • <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity name="MaxMind.GeoIP2" publicKeyToken="66afa4cc5ae853ac" />
      <bindingRedirect oldVersion="0.0.0.0-32767.32767.32767.32767" newVersion="2.3.0.0" />
      </dependentAssembly>
    • <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity name="MaxMind.Db" publicKeyToken="66afa4cc5ae853ac" />
      <bindingRedirect oldVersion="0.0.0.0-32767.32767.32767.32767" newVersion="1.0.1.0" />
      </dependentAssembly>
    • <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" />
      <bindingRedirect oldVersion="0.0.0.0-32767.32767.32767.32767" newVersion="1.4.9.0" />
      </dependentAssembly>
    • <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity name="Mono.Security" publicKeyToken="0738eb9f132ed756" />
      <bindingRedirect oldVersion="0.0.0.0-32767.32767.32767.32767" newVersion="4.0.0.0" />
      </dependentAssembly>
    • <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity name="DocumentFormat.OpenXml" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="0.0.0.0-32767.32767.32767.32767" newVersion="2.0.5022.0" />
      </dependentAssembly>
    • <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity name="SpreadsheetLight" publicKeyToken="32fbb46dc1730c57" />
      <bindingRedirect oldVersion="0.0.0.0-32767.32767.32767.32767" newVersion="3.4.4.0" />
      </dependentAssembly>
    • <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity name="AngleSharp" publicKeyToken="e83494dcdc6d31ea" />
      <bindingRedirect oldVersion="0.0.0.0-32767.32767.32767.32767" newVersion="0.9.5.41771" />
      </dependentAssembly>
    • <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity name="Dropbox.Api" publicKeyToken="310f0e82fbb45d01" />
      <bindingRedirect oldVersion="0.0.0.0-32767.32767.32767.32767" newVersion="4.0.0.0" />
      </dependentAssembly>
    • <dependentAssembly xmlns="urn:schemas-microsoft-com:asm.v1">
      <assemblyIdentity name="CookComputing.XmlRpcV2" publicKeyToken="a7d6e17aa302004d" />
      <bindingRedirect oldVersion="0.0.0.0-32767.32767.32767.32767" newVersion="2.5.0.0" />
      </dependentAssembly>
  5. Remove the following line referencing the Engage permissions provider:
    • <add name="SocialPermissionProvider" type="DotNetNuke.SocialLibrary.Components.PermissionProvider.SocialPermissionProvider, DotNetNuke.SocialLibrary" providerPath="~\Providers\PermissionProviders\" />
  6. Change the permissions defaultProvider to:
    • <permissions defaultProvider="ContentPermissionProvider">
  7. Remove the Dropbox and Box folder providers:
    •  <add name="DropboxFolderProvider" type="DotNetNuke.Enterprise.FolderProviders.DropboxFolderProvider.DropboxFolderProvider, DotNetNuke.Enterprise.FolderProviders" providerPath="~/Providers/FolderProviders/DropboxFolderProvider/" />
    • <add name="BoxFolderProvider" type="DotNetNuke.Enterprise.FolderProviders.BoxFolderProvider.BoxFolderProvider, DotNetNuke.Enterprise.FolderProviders" providerPath="~/Providers/FolderProviders/BoxFolderProvider/" />
  8. Change the folder defaultProvider to:
    • <folder defaultProvider="StandardFolderProvider">
  9. Remove all sitemap providers except coreSitemapProvider. Example:
    • <add name="PostSitemap" type="DotNetNuke.Enterprise.Publisher.Providers.Sitemap.Post, DotNetNuke.Enterprise.Publisher" providerPath="~\DesktopModules\DNNCorp\Publisher\Providers\" />
  10. Change the sitemap defaultProvider to:
    • <sitemap defaultProvider="coreSitemapProvider">
  11. Remove any remaining references to Enterprise library files. For example:
    • <add name="DropboxFolderProvider" type="DotNetNuke.Enterprise.FolderProviders.DropboxFolderProvider.DropboxFolderProvider, DotNetNuke.Enterprise.FolderProviders" providerPath="~/Providers/FolderProviders/DropboxFolderProvider/" />

 

Remove Enterprise .DLL files

  1. Go to the folder called 'bin' in your website root directory.
  2. Delete all files starting with "DotNetNuke.Enterprise" except the DotNetNuke.Enterprise.ContentPersonalization.DLL file
    EnterpriseDLLFiles.png

 

Execute SQL queries to remove menu items

  1. Run the following SQL commands on the database for the Evoq instance to be downgraded:
    • delete from personabarextensions where identifier not in ('Evoq.Servers','Evoq.Pages')
    • delete from personabarmenu where identifier not in  ('Content','Manage','Settings','Edit','Dnn.AdminLogs','Dnn.ConfigConsole','Dnn.Connectors','Dnn.CssEditor','Dnn.Licensing','Dnn.Extensions','Dnn.Pages','Dnn.Prompt','Dnn.Recyclebin','Dnn.Roles','Dnn.Security','Dnn.Sites','Dnn.SiteGroups','Dnn.Seo','Dnn.Servers','Dnn.SiteImportExport','Dnn.SiteSettings','Dnn.SqlConsole','Dnn.TaskScheduler','Dnn.Themes','Dnn.Users','Dnn.Vocabularies','Evoq.Accounts','Evoq.Assets','Evoq.Workflow','Evoq.Templates')

 

Replace your license

  1. Browse to Settings > About. Click the trash icon next to the existing license
  2. Follow the steps in Activating License Automatically to add the Evoq Basic product license. The license type should be Development for now.

 

Upgrade your Basic version

The next step will be upgrading your install to the next version number of Basic. This replaces the core files with versions appropriate to Evoq Basic. The version number of Evoq you are currently running will determine which version you will use for an upgrade. Reference the article Recommended Upgrade Path for DNN to determine what version you'll use for your upgrade. For example, if you're currently running Evoq Engage 9.1.1, you'll want to use Evoq Basic 9.3 as your upgraded version.

  1. Browse to the Evoq Success Network and download the appropriate version of Evoq Basic.
  2. Follow the steps in the article Upgrading Evoq to finish the upgrade.

Note that we do recommend that you eventually upgrade to the newest version of Evoq. Keeping your install up to date ensures your site's security and performance.

 

Finalizing the downgrade

At this point, the website should be usable and ready to be moved to your production environment. The final steps will be:

  1. Troubleshoot any errors that appear in your site logs. This can be done with the help of the DNN knowledge base.
  2. Shift your downgraded site out of your staging or test environment and back into production. The article Moving a Site to Another Server gives a step-by-step process.
  3. Switch the license type on the transferred site to Production
  4. Ensure that all references point to the new downgraded site.
  5. Decommission the old site, being sure to release the production license.

 

Testing

The site should be browsable as usual after the downgrade. Clicking the Evoq logo in the upper right should show the appropriate version of Evoq Basic:

 

EvoqBasicMenu.png

 

Comments

0 comments

Please sign in to leave a comment.