Dynamicweb 9.8

Release date: January 28th 2020

Dynamicweb 9.8 requires .NET Framework 4.7.2. This is a necessary step towards .NET Core compatibility. Please ensure that all custom code can be compiled against .NET 4.7.2 before upgrading.

The product and product list view models have been completely rewritten - and are not backwards compatible. Any features using templates built on the old view models must be rewritten to use the new model - such as the Product Catalog for ViewModels app, PIM Channels, PIM Feeds, and templates using the Ecommerce web api (/dwapi).

Dynamicweb 9.8 has been released with the following headline features:

Ecommerce has been improved with several new features and quality-of-life improvements to existing functionality:

  • Order drafts & cart management
    • Work with multiple carts from frontend before finalizing orders
    • View and manage carts from the backend
    • Show a list of open carts in the customer center app
    • New cart commands – copyarchiveset as active, and name carts
    • New setdiscount cart command for setting custom discounts from frontend on carts where you have impersonation rights
  • Shared favorite lists & improved favorite list management
    • View & create favorite lists from backend
    • Share favorite lists between all members of a group
    • Manage favorite lists on behalf of others
  • Product view model rewrite:
    • Complete rewrite – not backwards compatible
    • WidthHeightDepth and EAN product fields now included
    • Product group membership is now included
    • Paths added to the root of the site, for each group the product is in, where a valid path exists, is now included in the model
    • Support for PIM Asset Categories added
    • VariantInfo added – a new way of structuring variant information and e.g. to get max/min price of all RED variants under a master product, that varies on size and color
    • Numerous fixes to data not being presented correctly

When it comes to Discounts & Offers, they are now grouped by shop – this makes it possible to control access to discounts in a more granular manner using the permissions model. A new notification – AfterDiscountCalculation – has also been made available. The Payment & Shipping area has also seen minor improvements; all payment gateways should now be correctly named, and the DIBS Flexwin & Stripe payment gateways are now SCA compliant. A new shipping provider add-in – for Consignor – has been released. A setting for calculating VAT for gift cards has been added to comply with current EU regulations.

Dynamicweb PIM has been improved with some much-requested features and improvements:

  • Integration to online data pools – auto-update products with data from the Icecat.biz.
  • Reach hundreds of channels by connecting to channable.com – a service integrating with channels such as AmazoneBayGoogle ShopPriceRunnerGoogle AdvertsFacebook, and more. This means you can now leave the burden of creating and maintaining complex integration to specialists and focus on your core competences.
  • Asset management – image categories extended to support multiple additional types of assets, e.g. documentslinks, or videos. Control how assets are inherited across product families & variants. NB: This comes with a name change from Image categories to asset categories.
  • Completeness improvements – set rules on groups, restrict the publication of incomplete products, and more.
  • Import/Export improvements – the import/export tool is not based on the Ecom provider and supports defining primary keys and other advanced features
  • Various quality of life improvements to Queries, Bulk-edit and Navigation

The Content & Marketing areas have also been improved:

  • You can now improve your email automation setups by defining email marketing flows – sets of emails sent to groups of users in a fixed order and with a fixed delay. Combine with dynamic user groups or index queries for maximum effect.
  • Paragraphs may now be saved as content templates and reused across a solution with preconfigured content & settings – this greatly simplifies content creation on solutions with complicated item-based content, e.g. on Rapido
  • You can now dynamically convert images to the webP format via the Image Handler GetImage.ashx – this format offers better quality using less bandwidth. A fallback exists for non-Chromium-based browsers.
  • Minor improvement s to Tracking & Reporting

At the Platform level the following improvements have been made:

  • The Indexing framework has been updated with some requested features:
    • Improved logging
    • Support for “Did you mean?”-suggestions
    • Support for synonyms
    • Prices are now indexed and grouped by currency
    • File metatags are now properly indexed
    • Item relation list content is now indexed in the Page items content and Paragraph content fields
  • Technical
    • Improvements to the Navigation view model – now accounts for permissions, device type, and publish state as well as InPath, IsActive and IsClickable.
    • Minor improvements to various deployment providers
    • Canonicals are now absolute and always generated when a product is being shown, even if the product is shown using the canonical link
    • All projects have been moved to .NET Framework 4.7.2 – please make sure your custom code compiles against 4.7.2 before upgrading
    • Major rewrite of Ecommerce contexts

Looking to upgrade? Consult the bug fixes list before upgrade.

In the area of integration, the Dynamicweb 9.8 development cycle has had a special focus on Microsoft Dynamics 365 Business Central. The key change being that – despite all the new NAV/Business Central features added in 9.6 and 9.7 – we’re aware that we will never be able to develop standard solutions to all customer- and project-specific needs.

For this reason, we have made it possible to extend the Dynamicweb Plug-In Unit for Dynamics 365 Business Central by subscribing to more than 70 different Events on the ERP side. We have a video guide and a full Visual Studio Code example project ready for you to write your own AL extensions. Extending the plugin-unit in this manner empowers our ERP partners to create customer and project-specific code, whilst ensuring that you can always run the latest version of Dynamicweb Plug-In Unit on the latest version of Dynamics 365 Business Central.

Please note, that as of Dynamicweb 9.8 our Plug-In Unit for Business Central is made available as runtime packages only. You must pay an add-on license to use them. The source code is no longer available, so any customizations must be made as extensions. Our Plug-In Units for NAV 2013 to 2018 cannot be extended, but source code is still available. You must pay an add-on license to use them - customizations are done in source code and recompiled.

All the above is done with one overall goal in mind: Maintain the flexibility for which Dynamicweb is known, while always guaranteeing support for the latest continuous update from Microsoft Dynamics.

We have also worked on other cool features – here is a list of new features and improvements:

  • An EndPoint Management tool for connecting to our code units directly has been released – it is recommended for cloud hosted ERP systems, where you can’t/won’t use a connector service. Use endpoints in Live Integration and the Import data with custom request add-in.
  • Parameterized Scheduled Tasks – Scheduled batch jobs can now be saved as XML just like data integration activities. This means you can add everything to source control, edit parameters in a text editor and copy from one Dynamicweb project to another.
  • Override parameters of multiple scheduled batch jobs with a config file. This is useful for overriding web service URLs and secrets of multiple scheduled batch jobs as you move from DEV to STAGE to PROD.
  • The Ecom Provider has been refactored to prepare for UI import of products and users in PIM, Ecommerce and User Management – and to improve performance. This is an extensive refactoring and we encourage everyone using the Ecom Provider to double check active batch jobs/scheduled tasks.
  • Microsoft Dynamics 365 Business Central & Dynamics NAV
    • The Business Central plugin unit is now extendable – write your own AL extensions and subscribe to more than 70 different extensibility points.
    • The plugin unit is now guaranteed to be compatible with the most recent release of Business Central. This comes at a cost – all plugin units are now premium features and require an add-on license.
    • Labels of item line discounts and invoice discounts are now two labels instead of one. This makes it possible for frontend users to see which kinds of discounts are applied to a cart.
    • Labels of item line discounts and invoice discounts are ready for localization/translation. This makes it possible for frontend users to read discount labels in their local language.
    • Support for customer-specific price and inventory per Unit of Measure of a product when requesting live prices. If a single product is sold in pieces, boxes and pallets with customer-specific prices for each, frontend users can now get this information.
  • Maintenance:
    • Upgraded Plug-In Unit for Dynamics 365 Business Central Fall Release 2019
    • Upgraded Plug-In Unit for Dynamics 365 Finance and Operations Fall Release 2019
    • Upgraded integration framework for LS Retail 14.02 and LS Omni 4.2
System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure. at System.Net.Security.SslState.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest, Boolean renegotiation) at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result) at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size) at System.Net.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size) at System.Net.ConnectStream.WriteHeaders(Boolean async) --- End of inner exception stack trace --- at System.Net.HttpWebRequest.GetResponse() at Dynamicweb.Analytics.Seo.HttpData.Lookup()