Dear Sitefinity CMS customers and partners! We are excited to announce the release of Sitefinity CMS 12.2. This version contains: major performance update; form rules for email notifications; out of the box designers for custom widgets; custom error pages without writing any additional code; webhook mechanism that allows you to subscribe external services to different Sitefinity CMS events; individual preferences for users of the new backend UI; New UI support for Backend screens tweaks of dynamic modules; copy/paste MVC widget settings.
What's improved
Performance updates
One of the focuses of this release was speeding up key user scenarios.
- Reduce startup time of Sitefinity CMS instances by more than 80% in some scenarios
- Numerous optimizations throughout the Sitefinity CMS code that make the end-users and content creators' experience snappier. Simply by upgrading to Sitefinity CMS 12.2, you will experience reduced page loading times, database pressure, and, due to algorithmic changes in core Sitefinity CMS operations, almost every other activity.
- Startup time - The impact of these improvements will be visible during development, as well as in cases of application restarts in production environments
- Server Response Time (TTFB) - The impact of these improvements will be mostly visible after content changes that invalidate the output cache, as well as when the output cache expires on its own
- Loading of pages in the new content editing experience is much faster
To fine-tune the performance, you can use some newly introduced settings:
- Improved Sitefinity CMS startup by changing the way Sitefinity CMS loads assemblies with Feather controllers at startup. This is controlled by a new option, turned on by default, located in Settings -> Advanced -> Feather -> Use cached controller container assemblies
- Control the automatic loading of the Ninject extensions. When Sitefinity CMS starts it looks for and loads custom Ninject modules only when this setting is enabled. You can find this setting in Settings -> Advanced -> Feather -> Automatically load Ninject extensions
What's new
Form rules for email notifications
The enhanced form rules enable you to configure the forms to send notification emails to the appropriate group of people in your organization, based on the submitted form response.
Learn more...
Out of the box designers for custom widgets
Sitefinity CMS now comes with user-friendly, enhanced, autogenerated widget property editors. You can now set properties with type-specific field editors. You can also group property fields in sections and views and validate user input. In addition, you can conditionally display specific fields, depending on your custom requirements.
Learn more...
Custom error pages
You can now create custom error pages for different error codes as regular Sitefinity CMS pages, without writing any additional code. This makes it easier and faster to create them for all your projects. Custom error pages will improve your website security and user browsing experience.
Learn more...
Webhook mechanism
The Webhook allows you to subscribe external services to different Sitefinity CMS events, without writing any custom code. When an event registered in the Sitefinity CMS EventHub system is triggered, the Webhook sends the event data in JSON format via a POST request to the Webhook URL. Webhook also enables developers to extend Sitefinity CMS with new capabilities that follow the micro-service architecture.
Learn more...
Backend user preferences
Users of the new backend UI can now set their own individual preferences in their Sitefinity CMS account. The preference settings control the presentation of onboarding tips, the behavior of the CMS after publishing a page, and several accessibility settings.
Learn more...
The new editing experience support for Backend screens tweaks of dynamic modules
The new editing experience now supports columns ordering based on backend customizations for dynamic types, related media, related data, and fields definitions settings.
Learn more...
Reuse MVC widget settings
To facilitate reuse of widgets, you can copy the properties from the advanced settings of one widget and paste them directly in the advanced settings of another widget of the same type. This operation works for a Content block or custom MVC widgets in the New UI.
Learn more...
Integrations
The new LiveChat Sitefinity integration allows you to easily add LiveChat to your Sitefinity website. Engage with your customers in real-time while they are visiting your website to answer their questions and solve their problems.
Learn more...
- Cumulative security fixes and protections.
What's fixed
New content editing experience
- Added feature parity for creating some restrictions for the related media fields of content items. These restrictions are in the form of four settings that can be configured by the user and are the following:
- TargetLibraryId: Set an Id of a library that limits the upload mode of the related media field allowing upload only to the specified library
-
SourceLibraryId: Set an Id of a library that limits the select mode of the related media field allowing items to be selected only from the specified library
-
UseOnlyUploadMode: Set to true or false to disable select mode of the related media field and hide the selection option from the "Upload or select" screen
- UseOnlySelectMode: Set to true or false to disable the upload mode of the related media field
Child dynamic content types cannot be opened for editing when Warmup module is enabled in AdminApp (FP)
It's not possible to create second category at top level in AdminApp
Thumbnail selection does not persist in editor in AdminApp
AdminApp: Revision history of translated content item restores wrong version (FP)
AdminApp: Localized choice options are not being displayed as checked when opening an item for edit (FP)
AdminApp: Unable to see full names of templates with long title when creating a page (FP)
AdminApp: Item identification fields are not shown correctly in Page and Content selector (FP)
Performance improvement: Improve SQL Query performance for sf_page_node (FP)
AdminApp: Errors when changing page URL structure (FP)
AdminApp: Inconsistency in permissions for pages between old and new interface (FP)
AdminApp: Slow publishing of modules that allow selection of multiple related media items (FP)
AdminApp: "Allow multiple selection" for taxonomies not working (FP)
Improved performance by enabling AOT compilation
New UI - Custom filter by tag - all categories are displayed as root level categories
Pages are not showing up in the new interface if there is a custom content type with developer name page (FP)
AdminApp: Apostrophe sign in a title's page breaks edit mode (FP)
Admin app: Thumbnail selector persist Original size in dropdown
AdminApp: Cannot create or edit dynamic content items with specific field names (FP)
Unable to create a dynamic content type item through the related data field of another dynamic content type item only in AdminApp (FP)
Styles from AdminApp editor are loaded in the page editor and override client styles
Instructional text for related media fields is not displayed in AdminApp
'Array of Guids' field in module builder is hidden in AdminApp (FP)
Performance
- Performance optimization for exporting large number of subscribers from a mailing list
- Performance optimization for Feather module initialization
- Performance optimization for Feather FileMonitorInitializer
- Performance: Audit trail causes slow file upload when have a lot content locations and filtersMVC
- Performance: Audit trail causes slow file upload when have a lot content locations and filters (Optimized only for newly created pages and widgets, created after this version)
- Performance optimization for Sitemap
- Performance improvement: Improve SQL Query performance for sf_page_node (FP)
- Low performance on heavy load on frontend pages requested with unique query params when the page cache profile is set with varyByParams = "*"
MVC/Feather
- MVC widget template disappears from backend when the dynamic module name is changed (FP)
- MVC Form: Setting ExpectedFormat to Custom will cause errors on the MVC Form Widget (FP)
- Not able to edit the MVC content block when added in the newly created backend page (FP)
- Accessing the item`s detail view of an MVC widget throws an error when the UrlKeyPrefix is set and the MVC Calendar is dropped on the same page (FP)
- MVC: Incorrect MVC dynamic module child widget routing when more than 2 level of child types (FP)
- Feather: MVC dynamic module Parent widgets show List View when accessing their child items in the frontend
- MVC: Routing inconsistent behavior when using Use named route parameters (FP)
- Using Multiple MVC Image Gallery Widgets on One Page (FP)
- After an upgrade from 12.1.7100 or higher to 12.1.7125, MVC navigation widget CSS classes are lost (FP)
SiteSync
- "View" link in SiteSync pending items is showing Images in not translated language (FP)
- SiteSync: Cannot sync library after moving it under another library
- SiteSync: images - Upload new file to all translations results in failed sync
Pages
- Scheduled for publish/unpublish pages/news items are not synced correctly
- Pages: Permissions changes to a Redirection page don't mark it for Synchronization if the roles are picked from the first dialog that lists only a reduced set (FP)
- Error in all child page templates after modifying the parent template (FP)
- Unlock page functionality -> user should not be able to publish a page when a different user unlock the page and republish it (FP)
- Themes: When create a page translation the default theme is applied to the page template (FP)
Multilingual
- Multilingual system with monolingual site - Lists not displayed in the frontend
- sf-dynamic-items-selector shows unpublished items in Multilingual (FP)
- Thumbnail of Azure Blob storage video not showing when in Multilingual (FP)
- Single site: When using domain localization strategy, the same output cache page is returned for all languages (FP)
- When Multilingual is enabled and new content editing is disabled, moving Content blocks between layouts does not take effect on the frontend
- When using domain localization strategy, the same output cache page is returned for all languages
- Classic UI: When content is in awaiting approval for two languages, publishing one language removes both languages from the dashboard (FP)
- Revision history for translated pages in split localization strategy is not shown when using the new interface (FP)
Forms
- Predefined values for textbox field in forms can't be cleared (FP)
- Changing the View Responses permission for forms and setting the restriction to "One entry per IP" throws exception when anonymous user submits a response (FP)
- Forms: Violation messages with placeholders are not formatted when a Form is submitted (FP)
- Commas in check boxes field of forms module throws "invalid input" error when submitting a response (FP)
- Forms: Built-in Captcha is ignored when resend the request
- Creating forms with the same name as that of the existing content item types throws an error alert when publishing any form in the site (FP)
Advanced Settings Search
- Advanced settings search slows the saving of large config sections
- Advanced settings search: Edit config then reindex, breaks the advanced settings search
- Advanced settings search: Making changes in the advanced settings or adding custom fields breaks the backed views
Other Fixes
- Images in non-existent language show in Items waiting for sync (FP)
- Images: Memory issue with dynamic image resizing using ?size= parameter (FP)
- Images: Crop/resize/rotate does not work in NLB (FP)
- Blank image appears after uploading .svg image in CMS (FP)
- Can't add a link to an image in new CB (FP)
- ContentBlock: Empty alternate text attribute in image tags is removed when changes are saved (FP)
- Users with "Unlock" permissions Unable to unlock content items (FP)
- Allow permissions per field doesn't work when Long Text field is not editable (FP)
- With "Allow permissions per field" Long text field doesn't render (FP)
- Changing view permissions for classifications breaks backend pages for some content types (FP)
- Dynamic content with a field of type "Date and Time" crashes entry screen on invalid date (FP)
- Exporting dynamic content items exports Unpublished items (FP)
- Using GetValue to get Dynamic content in a lambda expression with Visual Basic causes an error
- Unable to compare revisions if Title field contains HTML markups (FP)
- Invalid markup - statistics script when the html element is run at server (FP)
- Dashboard has duplicate IDs in the markup (FP)
- Markup is different in preview and live versions of a page
- Improper Exception Handling in LibrariesDataProvider (FP)
- OData endpoint is inaccessible if an old Choice field exists in a module type (FP)
- WebServices: Clicking on the "Change" button causes the browser to hang (FP)
- External Claims-to-Fields mapping not working for non-text fields (FP)
- In memory temporary storage for NLB
- Password reset link is not invalidated after password change
- Audit trail module logs the load balancer's IP address in NLB environment (FP)
- Incorrect response status 401 when requesting not existing route under ~/Sitefinity/Autneticate
- Configurations: Multiple domains in the Security->AccessControlAllowOrigin are not taken into account (FP)
- [Feeds] Rss feed does not have content when a site has only one language that is not English (FP)
- Workflow: Cannot edit backend pages when a workflow is defined (FP)
- ILoginCompletedEvent Success is not called for external Clients (when Sitefinity is used as STS) (FP)
- Content Location is registered for page where items are displayed in List mode only (FP)
- Upgrade: An exception of type 'System.Reflection.TargetInvocationException' occurred and was caught
- Backend pages queries optimization in main menu
- Optimize PackageManager.PackageExists(string packageName) while invoked with the same packageName
- Change the Label "Some of the selected libraries were moved or deleted." when selecting more than 100 libraries (FP)
- Flat and hierarchical taxa OData endpoints throw 401 (FP)
- Added setting for whether to load Ninject extensions on startup
- The folderId passed as an argument is invalid!" error when accessing folder (FP)
- Client-side personalization is throwing an error on pages with URL rewrite
- Navigation widget: Display settings are not taking effect on Edit/Preview (FP)
- Youtube video cannot be embedded in the new content block designer
- [Output Cache] GetHashCode() returns different values on different machines
- When you define a Description meta tag on your layout file, Sitefinity removes all other tags in the head of the page (FP)
- Custom fields appear/ disappear in Default fields when added/ deleted
- Taxonomies: Script 'function Bluetooth() { [native code] }, ' is shown while adding tags for a content item (FP)
- UI hangs when attempting to change storage on a large library
- Submitting comments in project deployed on Azure App Services results in duplicate entries (FP)
- Editor: Duplicated query string when using '~' in a link (FP)
- GetContentLocationService does not return correct ItemAbsoluteUrl even in SiteRegion (FP)
- Personalization by Landing URL works with page relative URL only (FP)
- Redis Health Check Message says "NLB is up" (FP)
- Sitefinity as a child app: When using SWT authentication Logout button does not redirect correctly (FP)
- Sitefinity as a child app: SWT backend Login does not redirect correctly and throws a 404 error (FP)
- Ecommerce: GetPostsValue method is missing in the PayPalStandardProvider (FP)
- Deleting a subsequent child taxon item via the API throws exception
- Improve consistency in Feather designer field types (FP)
- Content in specific language is not available when having split table strategy enabled after upgrade in MySQL (FP)
- Page URL doesn't escape brackets
- Setting "Allow permissions per field" causes "Publish" button to disappear (FP)
- You can't directly publish an item with a field of type GUID
- Get related media by id throws 500 error
- Content block: Providing link to a page whose parent page has an apostrophe(') in the url creates improper href (FP)
Other changes
System requirements / support updates
- Progress Telerik UI for ASP.NET AJAX updated to version to R3 2019
- Progress Telerik UI for WPF updated to R3 2019
- Progress Kendo UI updated to R3 2019
- Service Stack updated to version 5.7
- GeoLite database updated with source data from October 2019
- Removed Telerik.DataAccess.Fluent NuGet package as dependency of Progress.Sitefinity.All. The Telerik.DataAccess.Fluent NuGet package contains data access enhancer which is only required if you code custom modules and you need to enhance them in order to add persistence capability. Since Sitefinity comes out of the box with enhanced types, there is no need for Sitefinity NuGet packages to depend on it.
Optimize your Sitefinity upgrades with an OData-based test framework
A new test framework that uses Sitefinity CMS OData services to validate CRUD operations for all built-in content types.
You can use it to perform sanity checks for the built-in content types after upgrading Sitefinity CMS instances.
Learn more...
Documentation & samples
- Test framework based on OData
- New structure of Sitefinity and Sitefinity DEC documentation, improved UI
API and DB Changes
API Changes
- Full list of API changes is available here.
Database Changes
- Full list of database changes is available here.
Upgrades
- New more user-friendly widget designer will be applied to all widgets without custom designers/views.
Known issues
Regards,
Progress Sitefinity Team