Dynamicweb 9.4

Release date: January 30th 2018

Dynamicweb 9.4 introduces a new licensing model – DO NOT upgrade before reading the New License Model FAQ.

Dynamicweb 9.4 fixes a number of old bugs and faulty behavior in GetImage.ashx. This means that all crop modes and parameters now work as intended – and MAY lead to changes in behavior for solutions built around the old faulty behavior.

We recommend that you test your solutions thoroughly before upgrading a live-site to 9.4.

Dynamicweb 9.4 has been released with the following headline features:

  • Enterprise User Management – Create custom user types and group types, and assign them the fields, icons and hierarchies appropriate to their role
  • New Permissions model BETA – A more granulated permissions model allows you to set up permissions on everything, which gives you more precise control over which users can access and use which parts of the system. First version includes new permissions for websites, accordion nodes, tree structures, and parts of Ecommerce - read more here.
  • Various Dynamicweb PIM improvements:
    • Product Versioning allows you to maintain and enrich products without influencing the published version - read more here.
    • Use Workflows to ensure a consistent product enrichment process - read more here
    • Product Enrichment has been improved with bulk-edit for variants and language versions, and the ability to assign individual images to language versions and variants
    • The Combine Products tool has been improved, and can now combine in families rather than as variants – this is a useful feature for customers who wish to control and optimize product relationships in PIM rather than their ERP system

The following areas have also been improved:

  • Marketing has a new configurable dashboard, which allows you to keep track of key data, monitor the number of email subscribers, etc.
  • Subpages can now be rendered as a list in the content pane, rather than in the tree
  • Discounts may now be applied to all products in a certain query – and you can now create ‘50% off the cheapest product’ discounts.
  • AltaPay is now supported, with the full stack of payment features – saved cards, partial captures, returns, etc. Returns have also been implemented for the Quickpay payment provider.

The Integration Framework has been improved in preparation of the impending D365 integration release:

  • The LiveIntegration dll now has notifications – and can be extended without breaking compatibility
  • Logging on TaskExecute makes it easier to detect the source of scheduled task errors
  • New Scheduled Task Add-in – Import data with paging
  • Support for start from first runtime instead of start from last runtime for scheduled tasks

Finally, we’ve included a number of technical and platform improvements:

  • Improved performance and scalability in Ecommerce – see technical notes.
  • Better options for testing email setups
  • GetImage.ashx improvements – disable image caching, support for ICC profiles, fill canvas parameters, all crop modes now work as intended – see a sample implementation here.
  • The Social Media Publishing module has been deprecated in its current form.

Looking to upgrade? Check out the "Upgrading to Dynamicweb 9" article and consult the bug fixes list before upgrade.

These are some of the notable technical notes regarding the 9.4 release:

  • Many Ecommerce projects have been refactored to comply with the new Ecommerce architecture - this means that if you use the Ecommerce API in custom projects, you should test thoroughly before upgrading. Affected areas are:
    • Product.vb
      • VariantCombination -> VariantCombinationCollection to IList(of variantcombination) + readonly
      • VariantCombination -> SimpleVariant property setter changed to friend
      • VariantCombinationsWithStockCheck -> VariantCombinationCollection to IList(of variantcombination) + readonly
    • VariantGroupProductRelation.vb
      • LanguageId -> deleted (does not exist in data)
    • PriceMatrix.vb was deleted
    • Other areas (discounts.vb, shop.vb, etc.) have been refactored, but there should be no change of behavior.
  • A new notification BeforeQueryDatabase - exposes a list of autoids of products after search, but before querying the database. This allows you to filter or sort a query result further.
  • Server.ScriptTimeout has been increased to 1 hour - this prevents certain timeout exceptions when using the Integration Framework.
  • Anchor tag replacement has been deprecated - to renenable it, set /GlobalSettins/System/Url/ReplaceAnchor to true. But you should probably fix the markup instead...
  • File selector of file manager controls should be added for Maps module
    Apps\Maps
    Maps app paragraph settings updated to new controls
  • Make simpletree support all comparable types
    Cleanup and refac\API Refactoring
    Made Base implementation for SimpleTree support all Equatable types in .NET.
  • Split up LoginHandler into smaller meaningful classes
    Cleanup and refac\API Refactoring
    LoginHandler has been split into smaller meaningful classes
  • RenderBoughtFromDateTags function performance
    Cleanup and refac\Performance
    RenderBoughtFromDateTags function performance slightly improved
  • HasDynamicwebVersion function performance
    Cleanup and refac\Performance
  • Product edit UI update - make sure labels etc. are correct
    Cleanup and refac\UI Rework
    Edit product window redesigned and cleaned up
  • Do encode attributes correctly
    Ecommerce\Customer Center
    Attribute encoding has been improved for customer center lists
  • Added UrlAuthorization module to web.config to being able to control access to folders in filemanager using local web.config files
    Files\Permissions
    <modules> <remove name="UrlAuthorization" /> <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /> </modules> Has been added to default web.config in Dynamicweb. Then, if we want to shut down a folder so no one can browse it contents, a web.config with this information can be placed in the folder: <?xml version="1.0"?> <configuration> <system.web> <authorization> <deny users="*" /> </authorization> </system.web> </configuration> So in i.e. /Files/System, you can add a web.config with the authorization rule, and the content cannot be accessed using the direct url to protect configuration, logfiles etc.
  • Increase Server.ScriptTimeout
    Integration\Data Integration
    Server.ScriptTimeout timeout increased (up to 1 hr)
  • Adjust workflow UI
    PIM
    Fixes in PIM workflow UI
  • CombineProductsAsFamily should support multiple languages
    PIM\Product Edit mode
    Combine Products as Family now supports multiple languages
  • PIM - Move Group not possible
    PIM\Product Edit mode
    Added Move group menu action for group node in PIM warehouse
  • 'Visible fields' should have a search field
    PIM\Product Edit mode
    Minor UI fixed: changed default searchbox placeholder + added some margin to the search box input fields
  • Create 'WorkflowRepository', 'WorkflowStateRepository', 'WorkflowService' and 'WorkflowStateService'
    PIM\Product Edit mode
    - Added Workflow db entity model that is represents a workflow. - Added WorkflowService class which is a Domain Service responsible for resolving and creating workflows - Added WorkflowState db entity model that is represents a workflow state. - Added WorkflowStateService class which is a Domain Service responsible for resolving and creating workflow states - Added WorkflowNotification db entity model that is represents a workflow notification. - Added WorkflowNotificationService class which is a Domain Service responsible for resolving and creating workflow notivications
  • PIM export/import, add column in Excel sheet
    PIM\Product Edit mode
    PIM export/import: Added field name column for each language in Excel sheet.
  • Change workflow notification folder
    PIM\Product Edit mode
    PIm Workflow template selector reads files from 'Files/Templates/PIM/Workflow Notifications'
  • Implement 'Product family' option in CombineProductsAsFamily
    PIM\Product View mode
    Combine products as family now has a radiobutton selector on step 1 that has you choose between "Create variants" and "Create family". "Create variants" is the old behaviour where you choose a variant group and asign variant options to each product in the family. "Create family" instead created a new variant group named after the master product and a variant option for each product in the family
  • PIM Notification should have additional tags
    PIM\Search and Navigation
    New PIM email notification tags: PIM:EmailNotification.Placeholder1.Name, PIM:EmailNotification.Placeholder2.Name. PIM:EmailNotification.Placeholder3.Name
  • GetImage changes in 9.4 - Test before upgrade
    Platform
    The fixes to GetImage.ashx means that all crop modes and parameters now work as intended – this may lead to changes in behavior for solutions built around old bugs and faulty behavior. We recommend that you test image handling your solutions thoroughly before upgrading a live-site to 9.4. GetImage ting: #38376 Mht ny licens: Azure and Load Balancing setups As of this version, we do not recommend you upgrade solutions hosted on Azure to 9.4. Azure may periodically change the physical server for the solution, which will invalidate your license, and require you to apply it again. In a similar vein, if you run a Load Balancing setup behind a DMZ, your NLB nodes will not be able to connect to the license service, and therefore can't revalidate a stale license. We therefore do not recommend you upgrade such a setup to 9.4 at this time.
  • Remove SQLLite from all projects in DW9
    Platform\API
    SQLlite is no longer required or used
  • Make the currency.format cachekey depending on rounding id
    Platform\API
    If 2 roundings is used on the same currency (custom), rounding rules are not applied.
  • Make service / repository for product VariantCombinations
    Platform\API
    Breaking changes: VariantCombination - Product has been changed to be readonly
  • Make the execute method on codeproviders overridable
    Platform\API
    Make the execute method on codeproviders overridable
  • Make permission model layer
    Platform\API
    Added a new permission model to security.
  • Make shared service/repository for product groups
    Platform\API
    Breaking changes! Methods removed: Public Sub New(dataReader As IDataReader) Public Sub Fill(dataReader As IDataReader)
  • Move enum-converter+helper to core
    Platform\API
    Added helper methods for parsing Enum values
  • Make new/old permissionmodel toggleable from Settings
    Platform\API
    The new permission model has been implemented but is not active by default. To activate it go to Settings -> Control Panel -> Users and enable the 'Use new permission model' checkboxd
  • Deployment settings tree icons
    Platform\Deployment Tool
    Deployment settings tree iconsIt's now possible to add an icon attribute (optional) where the value is the name of a known icon, e.g. Cube Example - modified Content.xml definition file with Icon attributes: <DataGroup Id="Content" Name="Content" Icon="Cube" ParentId="">
  • Make NavigateController resolve actions from multiple INavigators
    Platform\Deployment Tool
    NavigateController could resolve actions from multiple INavigators
  • DataItemProviders - add AddInParameterEditor attributes on providers
    Platform\Deployment Tool
    Added parameter editors on existing data item providers (configurable add-ins)
  • Add Add, Delete, Edit buttons to toolbar
    Platform\Deployment Tool
    Add, Delete, Edit buttons have been added to the toolbar
  • Customer and partner info from license file should be displayed on admin login
    Platform\License
  • New licensing model - Read FAQ before upgrading
    Platform\License
    Dynamicweb 9.4 introduces a new licensing model – DO NOT upgrade before reading the New License model FAQ. http://doc.dynamicweb.com/downloads/releases/upgrading/new-license-model-faq Azure and Load Balancing setups As of this version, we do not recommend you upgrade solutions hosted on Azure to 9.4. Azure may periodically change the physical server for the solution, which will invalidate your license, and require you to apply it again. In a similar vein, if you run a Load Balancing setup behind a DMZ, your NLB nodes will not be able to connect to the license service, and therefore can't revalidate a stale license. We therefore do not recommend you upgrade such a setup to 9.4 at this time.
  • Create created year on app index provider for forums
    Platform\Searching\Indexing
  • Add notification to expose autoids of products after search, before querying the database
    Platform\Searching\Indexing
    New notification: BeforeQueryDatabase Exposes autoids of products after search, before querying the database
  • Implement new ProductMacro, which returns ProductAutoIds for products in a specific FavoriteList
    Platform\Searching\Indexing
    Added new indexing macro FavoritesAutoIdByUserId - returns a list of product autoids based on the current extranet user id
  • Add grouping to Facet field dropdown
    Platform\Searching\Indexing
    Facets field dropdown is now grouped
  • ProductIndexMacros should use Cache.Current instead of Session
    Platform\Searching\Indexing
    ProductIndexMacros now use Cache.Current instead of Session
  • Support helper namespaces from includes vs compatibility
    Platform\Templates\Razor
    Support for App_Code includes have been added to intellisense in visual studio
  • Show default value of translation
    Platform\Templates\Translate
  • Make it possible to minify markup on pageviews
    Settings
    New setting in Settings -> Web and http -> Http: "Minify html" - removes unnecessary whitespace when enabled
  • Move settings section from system->solution settings to http settings
    Settings
    Some settings have been moved from Settings -> System -> Solution Settings to Settings -> Web and HTTP -> Http Compression
  • UI logfiler viewer
    Settings\Logs