For CMS version: 11
- SHOULD use the Kentico 11 installer
- MUST use Custom Installation
- SHOULD use "Prepare for installation on a remote server"
- MUST verify client’s intended .NET Framework version and select correlating version (.NET Framework 4.6 or .NET Framework 4.7)
- MUST use "Web application project"
- MUST use "I have access to SQL server" using a database that matches client’s production SQL Server version, shared amongst team developers
- SHOULD install all modules
- SHOULD use "Blank Site ASPX" Sample site
- MUST rename solution to use appropriate Namespace convention
- MUST NOT rename CMSApp project or change namespace
- MUST verify client’s intended production Kentico Hotfix version and apply hotfixes and MAY use KIM (Kentico Installation Manager), alternatively download hotfixes and apply manually
- https://docs.kentico.com/K11/installation
- https://docs.kentico.com/K11/installing-kentico-custom-installation
- MUST use "Built-in web server in Visual Studio"
- MUST use "Microsoft Azure project"
- MUST ensure when commit project to source control that deployment mode is OFF
- MUST commit installation to source control using the following lines in the .gitignore
- MAY store virtual objects on the file system for source control collaboration instead of in the database
# Private configuration
ConnectionStrings.config
AppSettings.config
# Ignore application data
**/App_Data/*
# But keep localization and a list of MIME types
!**/App_Data/mimetypes.txt
### Kentico ###
# Internal dependencies
CMSDependencies/
# Language resources
CMSResources/
- MUST create a Site using the Kentico Sites application using a meaningful Site Code Name
- SHOULD use a Site Code Name consistent with namespacing strategy
- MUST create a directory in ~/App_Themes directory using Site Code Name and request Front-End developers to add Front-End asset dispersal to this directory in the Grunt Build
- MUST create a directory in ~/CMSTemplates directory using Site Code Name and create a Master Page Template using ASPX integrating Front-End scripts and styles
- SHOULD stub out Page Templates and Web Parts BEFORE Front-End efforts begin to understand constraints around HTML generation of stock Kentico Web Parts
- https://docs.kentico.com/k11/configuring-kentico/managing-sites/installing-new-sites/creating-new-sites-using-the-wizard
- https://docs.kentico.com/k11/deploying-websites/exporting-and-importing-sites/export-folder-structure
- SHOULD use stock Kentico Page Types where they meet the requirements or inherit from stock Kentico Page Types to create new Page Types
- MUST NOT modify stock Kentico Page Types
- MUST use Custom Tables where data/content is not directly related to a page
- SHOULD namespace custom Page Types and Custom Tables with "custom" and "customtable" respectively
- SHOULD apply scoping to page types where page types should only be allowed under a certain page type or other scope
- SHOULD consider Web Parts for modular elements before a Page Type or Custom Table
- SHOULD define appropriate default template for Page Types
- https://docs.kentico.com/k11/developing-websites/defining-website-content-structure/page-types
- https://docs.kentico.com/k11/developing-websites/defining-website-content-structure/custom-tables
- https://docs.kentico.com/k11/developing-websites/defining-website-content-structure/page-types/configuring-page-types/limiting-the-pages-users-can-create](https://docs.kentico.com/k11/developing-websites/defining-website-content-structure/page-types/configuring-page-types/limiting-the-pages-users-can-create)
- SHOULD use stock Kentico Web Parts where the meet the requirements
- MUST create a directory in ~/CMSWebParts directory using Site Code Name.
- SHOULD preface name with "Custom" for custom web parts and modules (i.e. if site code name is MySite, directory name is CustomMySite) if creating custom web parts
- SHOULD identify Web Part Containers for Front-End tiers and cards to allow clients to add stock web parts with design constraints
- MAY consider editable web part
- SHOULD use "Portal Engine" Development Model
- SHOULD use an appropriate inheritance strategy, such as Page Nesting
- SHOULD avoid Ad-Hoc Templates during initial development
- https://docs.kentico.com/k11/developing-websites/choosing-the-right-development-model
- https://docs.kentico.com/k11/developing-websites/developing-websites-using-the-portal-engine
- https://docs.kentico.com/k11/developing-websites/developing-websites-using-the-portal-engine/inheriting-portal-engine-page-content
- SHOULD use CSS List Menu Web Part for menus, but MUST stub out menu BEFORE Front-End efforts begin due to significant requirements
- MUST create a custom Module and add settings to the Kentico "Settings" Application
- SHOULD disable the securitry signature for macros by manually adding the @ character before the closing %} sequence of a macro. When the security signature isn't disabled, the macro is evaluated using the creating user's permissions. If a user is deleted or if the hash salt is changed (i.e. the production environment), macros will fail until resigned. Without a signature, the Public User's permissions are used to process the macro.
{% CurrentPageInfo.DocumentName @%}
- MUST install Kentico on target server (see also, Installation and Setup)
- SHOULD Export Site using Kentico "Sites" Application
- SHOULD ensure all objects are stored on the file system rather than database using the Kentico "System" Application prior to deployment
- SHOULD run KInspector and review recommendations
- SHOULD deselect "Export pages" as it will overwrite client pages or add in test pages to their environment
- SHOULD deselect License Keys and Users
- https://docs.kentico.com/k11/deploying-websites/exporting-and-importing-sites/exporting-sites
- https://docs.kentico.com/k11/deploying-websites/deployment-mode-for-virtual-objects
- https://advantage.kentico.com/deploying
- https://advantage.kentico.com/maintaining
- MUST use Kentico Culture Support
- MUST use Kentico Security Checklist while Designing, Developing, and Deploying a website
- SHOULD use Kentico Integration Bus for integration with external systems
- SHOULD use Kentico’s WebAPI pattern when exposing a custom API, per Using ASP.NET Web API with Kentico
- MAY use Kentico’s XML serialization for CI on the database items
- MUST use Kentico Settings for configuration whenever possible (see also, Configuration)
- MUST log exceptions to Kentico Event Log
- SHOULD use CMS.DataEngine
- MAY use Entity Framework if performing READ-ONLY queries with Custom Tables
- MUST NOT use Entity Framework for modifying data in Custom Tables
- SHOULD only customize routes and URL rewriting using Kentico Settings application and Pages application
- MUST use Kentico File System Providers
- SHOULD use Kentico Registration or Kentico Users Application
- https://docs.kentico.com/k11/managing-users/user-management
- https://docs.kentico.com/k11/managing-users/user-registration-and-authentication
- SHOULD define permissions using the Kentico Permissions application
- MAY consider e-Commerce Membership for purchased access
- MAY consider EMS Personas for marketing personalization