9.5.0.4 Release Notes

August 19, 2020

Highlights


Release Information

This patch release includes major performance changes and minor bug fixes.


Breaking Changes

JSON Minification

Some impacts related to JSON Minification performance enhancements (ZPD-10518 released in Znode 9.3.2.4) are identified and therefore JSON Minification is disabled for this release. 

More enhanced changes will again be available in the coming releases.


Other Breaking Changes

Please refer to this Breaking Changes document for more information.


Enhancements


[ZPD-10327] - Performance: Data From ERP Connector On Webstore

Shopper Experience


Earlier, all the information from the ERP Connector used to get fetched from the database and then used to get displayed on the web-store.

To improve the performance of the web store, caching is implemented for information fetched through ERP so that if the required data is available in the cache, the web store will fetch the data from there instead of the database. This has improved the performance and the page loading time of the web store.


Important: It is essential to clear the API cache when changes are made in ERP configurations from the Znode admin application.


[ZPD-10328] - Performance: Catalog Data

Shopper Experience


All the calls initiated to fetch CatalogId were made for the database.

To improve the performance of the web store, caching is implemented for such scenarios, so that if the required information is available in the cache, the web store will fetch the information from there instead of the database. 


Important: It is essential to clear the API cache when any changes are made in the store URLs or when the store assignments of users are changed.


[ZPD-10431] - Performance: Link Widgets

Shopper Experience


To improve the performance of the product list fetched and displayed in the link widget(s) on the PDP, a cache mechanism is implemented for WebStoreWidget/GetLinkProductList API so that the products available in the widgets can be cached. The products will then be fetched from the cache instead of the database, thereby improving the performance and reducing the loading time of the product list.

[ZPD-10331] - Performance: SEO Details From Web Store Cache

Shopper Experience


Earlier, to get the SEO information, the web-store used to initiate a call to check whether the required information is available in the API cache.

To improve the performance of the web store, the information will now be checked in the web store cache, so that the unnecessary call initiated to API can be eliminated.


Important: It is essential to clear the API cache when any changes are made in the SEO Friendly URL of products and categories from the Znode admin application.


[ZPD-10432] - Performance: Keywords Redirect

Shopper Experience


To improve the performance of the web store search, a cache mechanism is implemented for Search/GetCatalogKeywordsRedirectList API so that the data from the Keywords Redirect can be cached. The data for the redirection URL will then be fetched from the cache instead of the database, thereby improving the performance and reducing the time required for the search to bring the results. 

Note: The cached data from Keywords Redirect will get refreshed whenever any keyword redirect is added, updated, or deleted.


[ZPD-10434] - Performance: Cart Count

Shopper Experience


The count of products available in the cart is calculated and displayed on several pages. Earlier the count always used to get fetched from the database.

With this release, the count will be saved and fetched from the session for scenarios where there is no need for a DB call. This enhancement will not only improve the performance but also the experience of customers (shoppers) visiting the web store.


[ZPD-10711] - API Cache Durations

Shopper Experience


The cache duration of all keys is set to 60 minutes.


[ZPD-10779] - CurrentPortalCacheDuration Key Cache Duration

Shopper Experience


The duration of the CurrentPortalCacheDuration cache key is set to 20 minutes.


[ZPD-10435] - Performance: Registering All Routes

Shopper Experience


Certain routes were identified which used to call the default route available in the route.config file. Due to which unwanted calls used to get initiated to SEO API, thereby making responses to the web store requests slower.

Therefore to improve the performance of the responses, the entries of such routes were added in the route.config file.

This enhancement has improved the performance of the web store.


[ZPD-10433] - Performance: Dynamic Styles

Shopper Experience


To improve the loading time of the styles displayed on the web store, Donut caching is implemented for Dynamic Styles so that the styles can be fetched from the cache instead of the database, thereby improving the performance and reducing the time required for the load the styles on the web-store. 

Also, a provision is made to allow Dynamic Styles to handle multiple requests simultaneously.

Important: It is recommended for custom projects to add all the new controllers/actions in RouteConfig for better performance.


[ZPD-10584] - Performance: Web Store Widgets

Shopper Experience


Ajax calls are used for Home page and product detail page widgets. When these pages are loaded for the first time, all the widgets request data simultaneously, causing the slowness.

Therefore to reduce the loading time and improve the performance of the widgets, non-Ajaxified calls will be initiated in scenarios where Donut caching is enabled.

Note: Ajaxified calls will be initiated when Donut caching is disabled.

[ZPD-10518] - Performance: JSON Minification

Shopper Experience


Earlier, API used to provide responses for properties with default or null values as well, which were not required. Due to which the size of responses used to increase, causing load on the network.

Therefore to avoid unwanted properties in response, JSON minification is introduced in Znode, which makes responses light. Also when initiating a request to the API, a Minified-Json-Response header will be set in the request and API will return the minified JSON if this header is present in the request.

This enhancement will reduce the load on the network.

Note: Minified-Json-Response header will be set only for web-store requests


[ZPD-10582] - Performance: Donut Caching For Logged-In Users

Shopper Experience


Earlier, to improve the performance of the web store, a Donut cache mechanism was implemented for all the highly usable web pages (like the home page, product pages, category pages, etc) so that they can be served directly from the cache instead of the database.

This provision was available for guest customers (shoppers) but now will be available for logged in customers (shoppers) as well.


[ZPD-10643]- Performance: Search/FullTextSearch API Optimization

Shopper Experience


Earlier, Search/FullTextSearch API used to respond slow when configurable products were searched. This was due to an unwanted database call, which has now been removed.

This will not only enhance the performance of the search and PLP but will also reduce the loading time of the search results displayed on the search results page.


[ZPD-10778] - Performance: SearchAgent.GetSeoUrlDetail Method Optimization

Shopper Experience

The SearchAgent.GetSeoUrlDetail method is optimized so that unnecessary calls to the API can be avoided when registered users log in to the web store.

This enhancement has improved the performance of the web store in cases of slug URLs.


[ZPD-10842] - Performance: Published Category Details

Shopper Experience

To improve the performance of the category details, a cache mechanism is implemented for PublishCategory/GetPublishCategory API so that the category details are cached. The details will be then fetched from the cache instead of the database, thereby improving the performance and reducing the loading time of the published category details. 

Note: The data cached will get refreshed whenever any category is published directly or indirectly.


[ZPD-10851] - Performance: Published Category List Details

Shopper Experience

To improve the performance of the category list details, a cache mechanism is implemented for PublishCategory/List API so that the category list details are cached. The details will then be fetched from the cache instead of the database, thereby improving the performance and reducing the loading time of the published category list details. 


Issues Resolved


[ZPD-9111/ZLMC-1157] - API - Validation error was not getting displayed for the maximum quantity scenario when a product was added to the cart.


[ZPD-10710/ZLMC-1417]  - Admin - Due to the usage of an incorrect macro, no value was getting displayed in the Order Receipt for the Shipping Method in the email notification.


[ZPD-10763/ZLMC-1435] - Admin - Currency set as a default currency from Global Settings was not getting selected by default on the Add Shipping Method screen.


[ZPD-11307/ZLMC-1492] - Admin & Web Store - No linked products were not getting displayed in the You May Also Like section on the web-store when linked products were updated and the product was saved as draft.


[ZPD-10898/ZLMC-1447] - Web Store - The tiered price was not working for addons because the XML was not getting generated properly.


[ZPD-10899/ZLMC-1416] - Web Store - Add and Edit buttons were getting displayed in the Address section on the Checkout page for account users with Role Type as 'User'.


[ZPD-11354/ZLMC-1501] - Admin - Epicor Connector Settings screen used to display an invalid message when changes were saved, and the Add Epicor Connector Touchpoint popup had an inappropriate title.


[ZPD-11514/ ZLMC-1522] - Admin - Back button was not available on the Associate Categories popup on the Edit Product screen.


[ZPD-11586/ZLMC-1530] - Admin - View action was not working for the Scheduler Logs.


[ZPD-10685] - Admin - Admin users were unable to associate the searchable fields when the same attributes were used as search profile facets.

[ZPD-10898/ZLMC-1447] - Web Store - Tiered pricing was not getting updated when the quantity of product with addon was updated from the Cart page.


[ZPD-11173/ZLMC-1466] - Admin - Incorrect modified date was getting saved in DB when changes were made in the Inventory.


[ZPD-11292/ZLMC-1487] - Admin - The screen used to freeze when View action was clicked from the ERP Configuration screen.


[ZPD-11729/ZLMC-1545] - Admin - There were some UI issues on the Pricing tab of Edit Product screen for Custom columns.


[ZPD-11830] - Web Store - Linked products were not getting displayed for non-default variants on the configurable product PDP.


[ZPD-11934] - Admin - After a product is marked as disabled, an incorrect notification message was getting displayed when changes were made and saved for an order from the Manage Order screen.


[ZPD-11989/ZLMC-1596] - Admin - Duplicate products were getting generated when a catalog was published.

Important: The publishCatalogId will now be passed to the EnsureMongoIndex method and to event written inside this method, instead of pimCatalogId.

Implementation Details


[ZPD-10327] - Performance: Data From ERP Connector On Webstore

To implement this enhancement, 

  • GetActiveERPConfigurationFromCache method was added in ERPConfiguratorService.cs file

  • Changes were made in the following:

    • GetActiveERPClassName, GetActiveERPClassId and GetERPClassName methods of ERPConfiguratorService

    • cache.config file

Here is the API path: ERPConfigurator/GetActiveERPClassName

Important: It is essential to clear the API cache when changes are made in ERP configurations from the Znode admin application.


[ZPD-10328] - Performance: Catalog Data

To implement this enhancement,

  • GetPortalListFromCache, GetPortalPublishCatalogFromCache and GetPortalPublishCatalogFromCache methods were added in the BaseService.cs file.

  • Changes were made in GetUserPortal, GetPortalCatalogId and GetAvailablePortals methods of BaseService.cs file.

Important: It is essential to clear the API cache when any changes are made in the store URLs or when the store assignments of users are changed.


[ZPD-10331] - Performance: SEO Details From Web Store Cache

To implement this enhancement,

  • GetSeoUrlDetailFromCache and GetSEODetailsFromAPI methods were added in SearchAgent.cs file

  • Changes were made in the GetSeoUrlDetail method of SearchAgent.cs file.

Important: It is essential to clear the API cache when any changes are made in the SEO Friendly URL of products and categories from the Znode admin application.


[ZPD-10431] - Performance: Link Widgets

To implement this enhancement, changes were made in  the following :

  • cache.config file of Znode.Engine.Api

OnPublishProduct method of ZnodeEventObserver.cs file

Note: The products cached for link widgets will get refreshed whenever any product is published directly or indirectly.


[ZPD-10432] - Performance: Keywords Redirect

To implement this enhancement, 

  • Changes were made in the following:

    • cache.config file

    • CreateSearchKeywordsRedirect, UpdateSearchKeywordsRedirect and DeleteSearchKeywordsRedirect methods of SearchService file

    • GetCatalogKeywordsRedirectList method of SearchCache file

  • OnKeywordsRedirectListChange method was added in ZnodeEventObserver.cs file

Note: The cached data from Keywords Redirect will get refreshed whenever any keyword redirect is added, updated, or deleted.


[ZPD-10434] - Performance: Cart Count

To implement this enhancement, 

  • Changes were made in the following:

    • GetCartCount method of CartAgent file

    • CartCount method of HomeController

  • ClearCartCountFromSession method was added in CartAgent file


[ZPD-10435] - Performance: Registering All Routes

To implement this enhancement, changes were made in the following:

  • Index method of the CategoryController file

  • RouteConfig.cs


[ZPD-10433] - Performance: Dynamic Styles

To implement this enhancement, changes were made in the GetDynamicStyles method of DynamicContentController file.

Important: It is recommended for custom projects to add all the new controllers/actions in RouteConfig for better performance.


[ZPD-10643] - Performance: Search/FullTextSearch API Optimization

To implement this enhancement, changes were made in the GetAssociatedProducts method of PublishProductHelper file.

[ZPD-10518] - Performance: JSON Minification

To implement this enhancement, 

  • Changes were made in the following:

    • SetHeaders and SetMinifiedJsonResponseHeader methods of BaseClient file

    • InsertIntoCache method of BaseCache file

    • CreateOKResponse method of BaseController file

    • Global.asax.cs file

    • Web.config file

  • Following were added:

    • MinifiedJsonResponseHeader property and SetMinifiedJsonResponseHeader method were added in of BaseClient file

    • ToJson method in ApiHelper file

    • MinifiedJsonResponse property in ZnodeApiSettings file

    • ZnodeHttpHeaders file

    • GetHeaderFormattedString and GetHeaderValue methods in ZnodeHttpHeaders file

    • MinifiedJsonResponse property in ZnodeWebstoreSettings file

    • CreateOKResponse method in BaseController file

Note: Minified-Json-Response header will be set only for web-store requests


[ZPD-10582] - Performance: Donut Caching For Logged-In Users

To implement this enhancement, changes were made in the following files:

  • ZnodePageCache

  • HomeController

  • CategoryController

  • ContentPageController

  • ProductController

  • _Layout.cshtml

  • ProductList.cshtml (for Maxwell’s Hardware theme)


[ZPD-10711] - API Cache Durations

To implement this enhancement, changes were made in the cache.config file of Znode.Engine.API


[ZPD-10779] - CurrentPortalCacheDuration Key Cache Duration

To implement this enhancement, changes were made in the web.config file of Znode.Engine.Webstore.


[ZPD-10584] - Performance: Web Store Widgets

To implement this enhancement, 

  • Changes were made in:

    • _Homecontent.cshtml

    • Event.min.js

  • The following widgets were converted to WidgetPartialAuto format:

    • LinkProducts widget

    • SubCategory (CategoryGrid) widget

  • A new method WidgetPartialAuto was added in HTMLExtensions.cs file

Note: Ajaxified calls will be initiated when Donut caching is disabled. 


[ZPD-10778] - Performance: SearchAgent.GetSeoUrlDetail Method Optimization

To implement this enhancement, a new property searchClient was added and used instead of _searchClient in SearchAgent file.


[ZPD-10842] - Performance: Published Category Details

To implement this enhancement, changes were made in the cache.config file of Znode.Engine.API

Note: The data cached will get refreshed whenever any category is published directly or indirectly.


[ZPD-10851] - Performance: Published Category List Details

To implement this enhancement, changes were made in the cache.config file of Znode.Engine.API

Note: The data cached will get refreshed whenever any category is published directly or indirectly.


[ZPD-9111/ZLMC-1157] - API - Validation error was not getting displayed for the maximum quantity scenario when a product was added to the cart.

To resolve this issue, 

  • ValidateSKUDetails, ValidateMinMaxQuantity and ValidateQuantity methods were added in ShoppingCartService.cs

  • AddToCartProduct method was modified


[ZPD-11586/ZLMC-1530] - Admin - View action was not working for the Scheduler Logs.

To resolve this issue, changes were made in the SchedularLogList.cshtml file.


[ZPD-10710/ZLMC-1417]  - Admin - Due to the usage of an incorrect macro, no value was getting displayed in the Order Receipt for the Shipping Method in the email notification.

To resolve this issue, changes were made in the OrderReceipt email template.


[ZPD-10763/ZLMC-1435] - Admin - Currency set as a default currency from Global Settings was not getting selected by default on the Add Shipping Method screen.

To resolve this issue, changes were made in the GetActiveCurrency method of ShippingAgent.cs file.


[ZPD-11307/ZLMC-1492] - Admin & Web Store - No linked products were not getting displayed in the You May Also Like section on the web-store when linked products were updated and the product was saved as draft.

To resolve this issue, changes were made in the MapLinkProducts method of WebStoreWidgetService file.


[ZPD-10898/ZLMC-1447] - Web Store - The tiered price was not working for addons because the XML was not getting generated properly.

To resolve this issue, changes were made in the UpdateQuantityOfCartItem method of the CartAgent.cs file.


[ZPD-10899/ZLMC-1416] - Web Store - Add and Edit buttons were getting displayed in the Address section on the Checkout page for account users with Role Type as 'User'.

To resolve this issue, changes were made in the following files:

  • _BillingShippingAddress

  • File:_DisplayAddress


[ZPD-11354/ZLMC-1501] - Admin - Epicor Connector Settings screen used to display an invalid message when changes were saved, and the Add Epicor Connector Touchpoint popup had an inappropriate title.

To resolve these issues, changes were made in the following:

  • ERP_Resources.resx

  • _UnAssignedTouchPointsList.cshtml

  • CreateConnectionAttributes method of ERPConnectorController.cs


[ZPD-11514/ ZLMC-1522] - Admin - Back button was not available on the Associate Categories popup on the Edit Product screen.

To resolve this issue, changes were made in the _UnAssociatedCategories.cshtml file.


[ZPD-10685] - Admin - Admin users were unable to associate the searchable fields when the same attributes were used as search profile facets.

To resolve this issue, changes were made in the RemoveAttribute method of Search.ts file.


[ZPD-10898/ZLMC-1447] - Web Store - Tiered pricing was not getting updated when the quantity of product with addon was updated from the Cart page.

To resolve this issue, changes were made in the UpdateQuantityOfCartItem method of the CartAgent.cs file.


[ZPD-11173/ZLMC-1466] - Admin - Incorrect modified date was getting saved in DB when changes were made in the Inventory.

To resolve this issue, changes were made in the following:

  • InventorySKUModel.cs file

  • InventorySKUViewModel.cs file

  • Znode_GetSKUInventoryList stored procedure.


[ZPD-11292/ZLMC-1487] - Admin - The screen used to freeze when View action was clicked from the ERP Configuration screen.

To resolve this issue, changes were made in the SchedularLogList.cshtml file.


[ZPD-11729/ZLMC-1545] - Admin - There were some UI issues on the Pricing tab of Edit Product screen for Custom columns.

To resolve this issue, changes were made in the following files:

  • pim.scss file

  • site.css file


[ZPD-11830] - Web Store - Linked products were not getting displayed for non-default variants on the configurable product PDP.

To resolve this issue, changes were made in _ProductExtras.cshtml file.


[ZPD-11934] - Admin - After a product is marked as disabled, an incorrect notification message was getting displayed when changes were made and saved for an order from the Manage Order screen.

To resolve this issue, changes were made in the following methods:

  • UpdateOrder of OrderService file

  • ToZnodeShoppingCart of ShoppingCartMap.cs file


[ZPD-11989/ZLMC-1596] - Admin - Duplicate products were getting generated when a catalog was published.

To resolve this issue, changes were made in the following:

  • GetAllProducts method of the SearchProductService.cs file

  • ZnodeConstant.cs file

  • Publish and EnsureMongoIndex methods of the CatalogService.cs file.


Important: The publishCatalogId will now be passed to the EnsureMongoIndex method and to event written inside this method, instead of pimCatalogId.

Did you find it helpful? Yes No

Send feedback
Sorry we couldn't be helpful. Help us improve this article with your feedback.