Release Notes 9.2.0

From Znode Knowledge Base
Jump to: navigation, search

New Features


Conversion Of Customer Account Into Admin Account

Administration

User Guide for Conversion Of Customer Account Into Admin Account


Znode now provides admin users the ability to convert customer (shopper) accounts into respective admin accounts.

Once a customer (shopper) account is converted to the admin account, all the access levels of the admin account get associated with the converted account.

To implement this functionality:-

  1. Two new methods IsUserNameAnExistingShopper and ConvertShopperToAdmin were added in the Znode.Admin.Core.UserController.
  2. A new method ValidateUser was added in User.ts file
  3. Two new methods CheckIsUserNameAnExistingShopper and ConvertShopperToAdmin were added in UserAgent class.
  4. A new method ConvertShopperToAdmin was added in UserClient class.
  5. A new method ConvertShopperToAdmin was added in Znode.Api.Core.UserController.
  6. A new method ConvertShopperToAdmin was added in UserService.


Limitations:
- Converted customer accounts (i.e. admin account) will not get removed from Customers >> Users page
- Any feature which was only available for customer accounts (like profiles, accounts, profile-based catalog, additional attributes, etc) will get removed from the converted account.
- Once a customer (shopper) account has been converted to an admin account, it cannot be converted back to the customer (shopper) account again.

Important:
- Only basic level testing is done for this feature. The complete testing and bug fixing will be done after the 9.2 release.

Editadminuser.png

Google Login

Shopper Experience

Znode now not only supports web store login using username and password but also supports web store login using Google account.

With multiple accounts over various websites, it’s difficult for customers (shoppers) to remember all of their login information. Therefore, Znode has provided the convenience of Google login, so that customers (shoppers) don’t have to remember the new login information every time.

Log in with Google account will also reduce the friction during checkout by making it easier for customers (shoppers) to remember their login credentials.

To implement this feature, changes were made in GetLoginProviders method of UserAgent.cs file.

Important:
SetUserNameForSocialLoginUser method was renamed in UserService.cs file.

Googlelogin1.png

Approval Routing - Comments

Shopper Experience

Znode now provides order approvers, the ability to submit comments while approving/rejecting any order. The submitted comments get displayed on the customer (shopper) account page on the web store.

To implement this functionality,

  1. Changes were made in GetOrderDetails method and ConvertToOrder method of OrderService.cs file.
  2. A new method InsertApproverComments was added in OrderService.cs file
  3. Changes were made in SetOrderDataFromQuote method of Checkout.ts file.
  4. Changes were made in CheckoutReceipt.cshtml and QuoteView.cshtml views.


ShippingAddress.png

Product Listing Options

Administration

Admin users can now manage the following product listing options independently for every store:-

  • Sort List

Admin users can associate/de-associate the available sorting options for a store using this functionality.

Sortlist.png


  • Page List

Page list can be used to allow customers (shoppers) to choose the number of products (from the available options) they wish to see on a single page.

Admin users can associate/disassociate page list(s) for the store using this section and can also set the order in which they will be displayed to the customers (shoppers).

Pagelist.png


To implement product listing options,

  1. Changes were made in _Paging.cshtml and _Sorting.cshtml views
  2. New methods Shortlist and Pagelist were added API PortalController in PortalServices.cs file.

Startup Diagnostics

Commerce

User Guide for Startup Diagnostics

Earlier when connection strings were misconfigured, there was no way to identify this issue which made it difficult to troubleshoot the problem.

With this release, Startup Diagnostics is introduced which not only allows the application to identify the connection errors but also provides helpful error messages when a misconfiguration is detected.

To implement this functionality,

  • Changes were made in following files
    • BaseClient.cs
    • ErrorCodes.cs
    • DiagnosticService.cs
    • IDiagnosticService.cs
    • LogMessageAgent.cs
    • DemoController.cs
    • DiagnosticsCache.cs
    • DiagnosticsController.cs
    • HelperUtility.cs
    • MongoConnectionHandler.cs
    • ApiResources.resx
    • WebStoreResources.resx
    • ResourceConstants.cs
    • PortalAgent.cs
    • Global.asax
  • Changes were made in UnAuthorized.cshtml view
  • Two new filesDefaultCacheBuilder.cs and ZnodeDiagnostics.cs were added in API - App_Start folder
  • A new file MongoSettings.cs was added in Libraries/Znode.Libraries.MongoDB.Data/Constants

Important:
- The Namespace for DiagnosticService.cs was changed from Znode.Engine.Services.Services.IService.IDiagnostics to Znode.Engine.Services - The logic for Diagnostics and Cache Building was moved from global.asax of API project to new files ZnodeDiagnostics.cs and DefaultCacheBuilder.cs respectively. - This functionality is not optional.

Startupdiagnostics.png

New Add To Cart And Checkout Pages

Shopper Experience

User Guide for New Add To Cart And Checkout Pages

The look and feel of the Cart and Checkout pages are completed changed to increase the user-friendliness of the pages.

To implement the new pages,

  • A new method GetAddressByAddressType was added in UserAgent.cs.
  • A new method CreateNewAddress was added in CheckoutController
  • A new view file _CreateAddress.cshtml was added in Views/Themes/Default/Checkout.
  • Changes were made in the following views
      • User/EditAddress.cshtml
      • Shared/_EditAddress.cshtml
      • _dynamic-grid.scss
      • Cart.scss
      • Single-page-checkout.scss

Shoppingcart1.png Check out.png Check out 1.png

Global Content Blocks

Administration

User Guide for Global Content Blocks

Znode now not only allows administrators to create store-specific content blocks but also global content blocks.

By creating a global content block, they will be able to add/update the content block messages on all the web stores simultaneously.

To implement this functionality,

  1. Two new properties IsGlobal(boolean) and IsGlobalContentBlock(string) are added in ManageMessageViewModel.
  2. A new method IsGlobal was added in Content.ts file.
  3. Changes were made in Znode_InsertManageMessages SP
  4. A new service GlobalMessageService is added.
  5. Changes were made in PublishManageMessageWithPreview method of ManageMessageController.

Globalcontentblocks.png

Enhancements


Content Popup Enhancement

Administration

The size of content widget configuration popup is increased to full-screen size to allow admin users to configure the contents easily.

To increase the popup size, changes were made in WidgetPageList.cshtml and _modal-popup.scss views.

Contentpopupenhancement.png


OAB (Open Account Billing) Flag on Global Payment Method level

Administration

Administrators can now enable/disable OAB for a payment method from the global level and not from the store level.

To implement this functionality,

  • A new partial view _EnableOAB.cshtml was introduced
  • A new property was added in PaymentSettingViewModel.cs and BaseDropDownOptions.cs files
  • Changes were made in
    • - PaymentSettingPortalModel.cs file
    • PaymentSettingsModel.cs file
    • UpdatePortalPaymentDetails method of PaymentSettingService.cs file
    • SetPaymentViewModelFromZnodeApplication and SetPaymentViewModelFromZnodePaymentApplication methods of PaymentAgent.cs file
    • GetPaymentSettingsList, UpdatePortalPaymentSettings, GetPortalPaymentSettingViewModel methods of StoreAgent.cs.
    • GetPaymentOptions method of CheckoutAgent.cs file
    • SubmitOrder, ShowPaymentOptions, SubmitForApproval, ChangeSubmitOrderButtonText methods of Checkout.ts file

Openaccountbilling.png


New Approval Routing Workflow

Administration / Shopper Experience

Znode, now, not only supports approval routing at the user (shopper) level but also supports at the store level.

Approval Routing at Store Level:-

For a particular store, admin users can now enable approval routing either for the entire store or for a specific payment method(s).

  • Approval Routing for Store - For ‘Approval Type = Store’, administrators can set the following:-
    • Order amount, above which the approval would be required
    • Approval level, which indicates approval will be required from single approval for multiple approvers
    • Approvers

Newapprovalroutingworkflow.png

  • Approval Routing for Payment Method- For ‘Approval Type = Payment Method’, administrators can set the following:-
    • Order amount, above which the approval would be required
    • Approval level, which indicates approval will be required from a single approver or multiple approvers
    • Payment configuration(s):-
      • Payment Method
      • Approvers

Approvalroutingforpaymentmethod.png

  • Approval Routing at User Level:-

Approval routing at user level now works only if approval routing is enabled at the store level. Therefore approval routing at user level works in conjunction with approval routing for a store or with approval routing for a payment method(s).

  • User level approval routing in conjunction with approval routing for the store-
    • When “From Amount” from MANAGE USER >> APPROVAL MANAGEMENT is greater than “Set Approval For Orders Above” from STORES & REPS >> STORES >> MANAGE STORE >> APPROVAL MANAGEMENT, then approval routing for that user (i.e. customer or shopper) works at the user level.

Note:- The workflow of approval routing at user level remains unchanged, except, the above works for any payment method the customer (shopper) chooses for placing an order.

  • User level approval routing in conjunction with approval routing for payment-
    • When “From Amount” from MANAGE USER >> APPROVAL MANAGEMENT is greater than “Set Approval For Orders Above” from STORES & REPS >> STORES >> MANAGE STORE >> APPROVAL MANAGEMENT, then approval routing for that user (i.e. customer or shopper) works at the user level.

Note:- The workflow of approval routing at user level remains unchanged, except, the above works only for the payment method(s) selected for approval routing at the store level.

ApprovalManagement.png

To implement the new workflow,

  • Changes were made in
    • UserApproverListResponse.cs, AddressModel.cs and UserApproverModel.cs files
    • GetPortalApprovalDetails, GetPortalApproverList, GetPortalApprovalTypeList, GetPortalApprovalLevelList and SaveUpdatePortalApprovalDetails methods
    • GetAccountQuote, IsLastApprover, GetUserApproverList, GetQuoteCartId, GetUserApprover , SendQuoteStatusEmailToApprover, SendPendingApprovalEmailToUser, SendQuoteStatusEmailToUser, NotifyNextLevelApprover and GetApprovers of AccountQuoteService file
    • SavePermissionSetting method of AccountService.cs file
    • BindPortalDetails method of Portal/PortalService.cs
  • New properties were added in ShoppingCartModel.cs, PaymentSettingsModel.cs and AssociatedProductsModel.cs files
  • New cs files PortalApprovalLevelListModel.cs, PortalApprovalLevelModel.cs, PortalApprovalListModel.cs, PortalApprovalModel.cs, PortalApprovalTypeListModel.cs, PortalApprovalTypeModel.cs, PortalPaymentApproverListModel.cs, PortalPaymentApproverModel.cs, PortalPaymentGroupListModel.cs and PortalPaymentGroupModel.cs were added in Znode.Engine.Api.Models.
  • New cs files PortalApprovalLevelListResponse.cs, PortalApprovalLevelResponse.cs, PortalApproverListResponse.cs, PortalApprovalResponse.cs, PortalApprovalTypeListResponse.cs and PortalApprovalTypeResponse.cs files were added in Znode.Engine.Api.Models.Responses.
  • New cs files PortalApprovalViewModel.cs, PortalApproverListViewModel.cs,PortalPaymentApproverViewModel.cs and PortalPaymentGroupViewModel.cs were added in Znode.Engine.Admin.ViewModels
  • Following new methods were added:
    • GetPortalApproverDetailsById, DeletePortalApproverUserById and SaveUpdatePortalApprovalDetails methods in PortalClient.cs and IPortalClient.cs files.
    • GetPortalApproverDetailsById, GetApproverOrder, DeletePortalApproverUserById and SaveUpdatePortalApprovalDetails methods in PortalEndpoint.cs file
    • ToUserApproverListModel and ToMapUserApprovalListModel in PortalMap.cs
    • d. GetPaymentNameByPaymentSettingId, GetApproversForUser and GetApproversForStore in AccountQuoteService.cs file
    • GetPortalApprovalDetails, SaveUpdatePortalApprovalDetails, SavePaymentGroupDetails, SavePortalApprovalDetails, GetPortalApprovalTypeName, SavePaymentApproverDetails, SaveUserApproversDetails, GetPortalApproverList, GetPortalPaymentApproverList, GetPortalApprovalTypeList and GetApprovers methods in Portal/PortalService.cs
  • New views GetPortalApprovalManagement.cshtml, PortalPaymentApproval.cshtml, PortalUserApproval.cshtml,

_PartialPortalApproverPanel.cshtml, _PartialPortalPaymentApproval.cshtml, _PartialPortalPaymentApproverPanel.cshtml and _PartialPortalUserApproval.cshtml were added.


Application Log Enhancement

Administration / Commerce

User Guide for Application Log Enhancement

Following are the Application Log enhancements introduced in this release:-

Detailed Logs

Administrators will now be able to view the detailed information in the logs which will also include methods and file names where the issue was found.

Logging in Service Library

Error Logs have been significantly enhanced in this release allowing administrators the convenience to view and manage logs.

Important: For proper functioning of the application, ensure that only Error trace level is turned on in the application log settings otherwise the performance of the site will reduce. Use other levels if debugging other issues are required

Applicationlogenhancement1.png

New Category Publish Workflow

Commerce

User Guide for New Category Publish Workflow

Earlier, when category publishing was in progress the web store’s performance was slow and the web store used to be down for some time.

In this release, a completely new workflow of category publish is introduced. This has improved the performance and the site down issues of the web store.

To implement the new workflow, changes were made in PublishCategoryProducts method of CatalogService class of Znode.Engine.Services.

Important:
The new Category publish workflow is implemented for Catalog - Category publishes feature. Therefore this workflow will work only when a category is published through catalog publish.


Znode Dependency Registration

Commerce

User Guide for Znode Dependancy Registration

Earlier, the ZnodeDependencyResolver was unable to resolve the components that were registered as InstancePerRequest or components which had parameterized constructors. With this Znode release, this will be possible.


Schedule Path Changes

Commerce

Earlier, the scheduler path was just absolute. With this release, scheduler path will not only be absolute but also relative.
E.g. of relative path- \\schedulerfolder
E.g. of absolute path- c:\TFS\Znode\schedulerfolder

To implement this functionality, changes were made in ERPTaskScheduler.cs, BaseService.cs, PortalService.cs, SearchService.cs and web.config files.


Advanced Email Opt-In Report

Administration

The advanced Email Opt-In report introduced in this release allows administrators to view the list of customers (shoppers) who have subscribed for regular promotional alerts.

Administrators can view and filter the data shown in this report based on the access levels they have.

To implement this report,
1. A new CustomerType property was added in ReportEmailOptInCustomerModel model of Znode.Engine.Api.Models project.
2. A parameter ShowOnlyRegisteredUsers was added in the GetEmailOptInCustomerReport method of DevExpressReportService.
3. The UI of EmailOptInCustomer report was updated in Znode.Libraries.DevExpress.Report project.
4. A property CustomerType property was added EmailOptInCustomerInfo model of Znode.Libraries.DevExpress.Report.
5. An _EmailOptInCustomer partial view was added in Views/DevExpressReport of Znode.Engine.Admin.

AdvancedReport1.png

Security Optimizations


API Token Expiration

Commerce

User Guide for API Token Expiration

A new security API is developed which provides other APIs, the permissions to perform actions.

To allow APIs to perform any action, developers can use this token to access the APIs, only after which the APIs will be able to perform the said actions.

To implement this functionality,

  • A flag EnableTokenBasedAuthorization was added in web config files of Admin, Web store and API projects.
  • A TokenExpirationTime key was added in a web config file of Znode.Engine.API
  • Changes were made in
    • GenerateToken method of TokenController of API project
    • Authorize method
  • A new method GetTokenKey was added
  • Two new files ZnodeEncryptionLibrary.cs and ZnodeTokenHelper.cs were added in Znode.Libraries.ECommerce.Utilities
  • In APIAuthorizeAttribute.cs filter class, we have modified the which checks the token is valid or not passed in the headers and also checks if the request is from the authorized user.
  • A filter is added in Znode.Engine.API.WebApiConfig.cs file
  • A SetTokenHeader method was added in SetHeaders method of BaseClient.cs file.

Issues Resolved


[ZPD-4122] - Admin - Whenever logs were generated and saved, the application used to clean the global settings cache, which made the Application Logs module slow. To resolve this issue Cache Key was added in DefaultLoggingConfigCache GetDefaultLoggingConfig API was written to get default logging configuration settings

Important: - ZnodeEventObserver.cs - OnLoggingConfigurationUpdate method - cache key was changed to DefaultLoggingConfigCache
- LogMessageService.cs - UpdateLogConfiguration method - cache key was changed to DefaultLoggingConfigCache
- Znode.Api.Core Project - DependecyRegistration.cs - Instance Scope was changed to InstacePerDependecy of DefaultGlobalConfigService service.

[ZPD-4145] - Admin - Invalid popup was getting displayed when triggers were associated. To resolve this issue,
- A ZnodeUserProfile foreignKey reference was updated to ZnodeProfile.
- Changes were made in Znode_InsertUpdateSearchProfileTrigger, Znode_GetSearchProfileTrigger and Znode_GetWebStoreSearchProfileTrigger SPs

Important:
The column name was changed from UserProfileId to ProfileId

[ZPD-4241] - Web store - Guest users were able to check out even when web store authorization was enabled. To resolve this issue,
- A new method IsAuthorizationMandatory was added in AuthenticationHelper file
- GetIsWebstoreAuthorize method as obsolete in AuthenticationHelper file
- IsAuthorizationMandatory method was called instead of GetIsWebstoreAuthorize method from AuthenticateUser method of AuthenticationHelper file
- IsAuthorizationMandatory method was called instead of GetIsWebstoreAuthorize method from and IsLoginRequired method of RedirectFromLogin file
- Changes were made in Login.cshtml view.

[ZPD-4360] - Admin - Duplicate data was being displayed when data was imported (products, categories, etc). To resolve this issue, changes were made in Znode_ImportSEODetails SP.

[ZPD-4649] - Admin - Search field in Promotions and Coupons module was not working. To resolve this issue,
- A key filter name FilterKeys.cs was updated
- Key filter was mapped in PromotionService.cs and PublishCatalogService.cs files.

[ZPD-4682] - Admin - All the product variants were not getting displayed on the Order print screen. To resolve this issue, changes were made in SetOrderLineItems method of ZnodeCheckout.cs file.

[ZPD-4683] - Admin - Product names were not getting displayed on the packaging slip. To resolve this issue, changes were made in CreateSingleOrderLineItem method of OrderAgent.cs file.

[ZPD-4688] - Admin - Incorrect order status was getting displayed when the order was marked as captured. To resolve this issue, changes were made in VoidRefundPayment method of OrderAgent.cs file.

[ZPD-4749] - Web store - New user creation email had incomplete user details. To resolve this issue, data changes were made in ZnodeEmailTemplateLocale table for New User Creation email template.

[ZPD-4766] - Web store - Search Suggestion URL was getting added in the return URL, due to which, once a user logs in, the control of the page used to get redirected to the Suggestion URL and gave a stream of JSON results of suggestion, thereby breaking the web store UI. To resolve this issue,
- A custom ActionFilter and RedirectFromLogin was added
- A provision to provide custom redirect and custom login URLs was added

[ZPD-4798] - Admin - Newly added customers were not getting displayed at the top of the Users list page. To resolve this issue, changes were made in DynamicClauseHelper.cs and HelperMethod.cs files.

[ZPD-4885] - Web store - Personalized code was getting displayed on the Receipt page. To resolve this issue, changes were made in GetCustomCartItem method of OrderAgent file.

[ZPD-4902] - API - When a different parent SKU and child SKU were added to cart then API did not show an error message. To resolve this issue, a new method CheckParentChildSkuForConfigurableProduct was added in ShoppingCartServiceV2.cs file.

[ZPD-4904] - Admin - Add Address field in the Create Order module stopped working whenever a new customer was created. To resolve this issue, changes were made in SetUserShippingBillingAddress method of OrderAgent file.

[ZPD-4908] - Web store - Personalized attribute was not getting displayed on PDP. To resolve this issue, changes were made in Znode_GetPublishSingleProduct SP.

[ZPD-4950] - Admin - Radio button labels were generated using the same IDs. To resolve this issue, changes were made in GetHtmlForNo and GetHtmlForYes methods of CreateControlHelper.cs file.

[ZPD-4951] - Following methods were not protected virtual and was therefore made as protected virtual-
- AccountQuoteModel GetOtherDetails of AccountQuoteService file
- GetApproverDetails method of AccountQuoteService file
- ZnodeOmsQuote GetQuoteCartId(ShoppingCartModel shoppingCartModel) in AccountQuoteService
- GetOmsOrderStateId method of AccountQuoteService file
- CheckBillingShippingId method of AccountQuoteService file
- GetEntityAssociatedGroup method of GlobalAttributeGroupEntityService.cs
- IsAccountHasChildAccount method of GlobalAttributeGroupEntityService.cs file
- SendQuoteStatusEmailToApprover method of AccountQuoteService file
- SendPendingApprovalEmailToUser method of AccountQuoteService file
- SendQuoteStatusEmailToUser method of AccountQuoteService file
- SendEmail method of AccountQuoteService file
- ReplaceFilterKeys method of OrderService file
- IsAdminUser method of UserService file
- EntityWhereClauseModel FilterClauseForUserId method of UserService file
- SaveApprovalUserId method of UserService file
- InsertAccessPermissionForUser method of Userservice file
- IsDoesNotRequirePermission method of UserService file
- UserModel BindUserDetails method of UserService file
- UserModel BindDetails method of UserService file

[ZPD-5019] - Admin - A functionality to add widget through one place in the CMS was not available. To resolve this issue,
- A SetConfigButton was added in ConfigButton.js file
- A partial view _ConfigButton was added in _ConfigButton.cshtml view
- Changes were made in WidgetPartial method of HTMLExtension.cs file.

Important:
HTML changes for the following modified widgets were undone
- _WidgetBannerSlider
- _WidgetBrandList
- _WidgetCategoryList
- _WidgetFromWidget
- _WidgetLinkPanel
- _WidgetOfferBanner
- _WidgetProductList
- _WidgetSearchWidget
- _WidgetTagManager
- _WidgetTemplateLinkPanel
- _WidgetTemplateProductList
- _WidgetTemplateTextEditor
- _WidgetTextEditor

[ZPD-5027] - Admin - Search field and filter were not working for Associate Products popup. To resolve this issue,
- Changes were made in ProductDetailsListViewModel method of TaxClassAgent file.
- Changes were made in GetUnassociatedProductList method of TaxClassService file.

[ZPD-5085] - Web store - Customers were not able to remove the bundle products from shopping cart page. To resolve this issue, changes were made in RemoveSavedCartLineItem method of ShoppingCartService.cs file.

[ZPD-5094] - Admin - Default currency was not getting displayed when new price list or store was created. To resolve this issue, changes were made in
- UpdateCurrency method of CurrencyService file
- ToSelectListItemsforCurrency method of PortalUnitViewModelMap file

[ZPD-5172] -The following property was not available in ElasticSelectValues model and was therefore added- public string VariantSKU { get; set; } In AttributesSelectValuesModel,SelectValuesEntity model. public string variantsku { get; set; }

[ZPD-5201] - Web store - On the Cart page, when zip code was removed, the estimated cost persisted. To resolve this issue, changes were made in CartAgent.cs file.

[ZPD-5212] - Znode.Engine.Webstore -> Script -> Core -> ZnodeHelper.ts file contained unnecessary "BlockHtmlTagForTextBox" method alert message and was therefore removed.

[ZPD-5218] - Web store - Grouped product price was not getting displayed on the PDP. To resolve this issue, changes were made in GroupProductList.cshtml view.

[ZPD-5219] - Webstore - PDP was not getting opened for Default and Big templates. To resolve this issue, a _Details_Lite.cshtml view was added.

[ZPD-5241] - Web store - “Limited Stock Available” error message was being displayed when all variants of the product were added to the cart. To resolve this issue, changes were made in CheckBaglineItemInventory and IsItemOutOfStock methods of ShoppingCartService.cs file.

[ZPD-5249] - Web store - Garbage data was getting displayed in the page title of PDP when page title had special characters. To resolve this issue, changes were made in _Medium_view_lite.cshtml and _small_view_lite.cshtml files.

[ZPD-5250] - Webstore - Add-on group name was not getting displayed on the cart page. To resolve this issue, a new method GetZnodeProductAddons was added in ZnodeShoppingCart.cs.

[ZPD-5255] - Admin- Global search text box did not work on Promotions and Coupons list page. To resolve this issue, ZnodePromotion application setting was updated.

[ZPD-5267] - Web store - Incorrect shopping cart quantity was getting displayed when the cart with a bundled product(s) is refreshed. To resolve this issue,
- Changes were made in GetCartCount method of ShoppingCartService class
- A new method GetBundleProductCount was added in ShoppingCartService class

[ZPD-5272] - Admin & Web store - Parent SKU was displayed on the web store when SKU was used in as a macro from Highlights module. To resolve this issue, changes were made in GetHighlight and GetHighlightDescription methods of HighlightService file.

[ZPD-5282] - Admin - The Content Page UI used to get disturbed when the Back button was clicked. To resolve this issue, z-index for the model popup was increased in TextBoxEditorFor.ts file

[ZPD-5308] - Admin - Store type ahead field’s UI was not proper in Product Feeds module. To resolve this issue, changes were made in the global.CSS view file.

[ZPD-5331] - Admin - Profile dropdown was getting reset when a content block was saved. To resolve this issue, a window load was used in _ProfileList partial view of the Content folder of Znode.Engine.Admin.

[ZPD-5334] - Admin - Admin users were unable to save the locale details of product attributes. To resolve this issue, changes were made in the AddRow method of ProductAttribute.ts file.

[ZPD-5339] - Admin - CSV bulk updated failed when HTML input was entered. To resolve this issue, changes were made in Znode_ImportPartialInsertUpdatePimProduct SP.

[ZPD-5340] - Admin - Text area attribute was failing to accept HTML Table in Add/Edit Product module. To resolve this issue, changes were made in an SQL query in Znode_ImportInsertUpdatePimProduct SP.

[ZPD-5383] - Admin - The images uploaded on the Add/Edit Product page were getting corrupted. To resolve this issue, changes were made in the following SPs:
- Znode_GetPimProductAttributeValues.
- Znode_GetProductsAttributeValue_newTesting
- Fn_GetMediaThumbnailMediaPath

[ZPD-5404] - Web store - On the checkout page, payment methods were accepting expired dates. To resolve this issue, changes were made in the checkout.ts file.

[ZPD-5407] - Admin - When editing and saving display order for product variants, the error message was getting displayed. To resolve this issue, a validation was added in Product.ts file.

[ZPD-5421] - Admin - Admin users were unable to import the SEO details without entering Title and Keyword. To resolve this issue, changes were made in master data of ZnodeImportAttributeValidation table.

[ZPD-5433] - Web Store- Default address was being displayed in the shipping address field after billing address was selected. To resolve this issue, an IsDefaultShipping check was removed from SetBillingShippingAddress method of CheckoutAgent.cs file.

[ZPD-5436] Admin & Web Store - Duplicate items were getting displayed on the 'Recently Viewed Products' section of the PDP of the web store after a category is published. To resolve this issue, changes were made in Znode_GetPublishCategoryGroup and Znode_GetPublishProductbulk SPs and in ZnodePublishCategoryProduct table.

[ZPD-5438] - Admin - Application was not allowed to publish the parent categories which does not have products. To resolve this issue, changes were made in PublishCatalogCategoryProductsPopup method of Catalog.ts file.

[ZPD-5515] - Admin - Clear cache functionality in Global Settings used to get hang when admin application used SSL flag. To resolve this issue, changes were made in
- CallClearCacheByUrl method of ClearCacheHelper file
- IsClearOnlyHttpsDomainCache property of DefaultGlobalConfigSettingHelper class
- GetCacheData method of GeneralSettingService file
- CacheData and UpdateCacheStatus methods of GeneralSettingAgent file

[ZPD-5204] - Admin & Web store - Incorrect product price was getting displayed on the generated invoice if add-on(s) was associated with the product. To resolve this issue, changes were made in GetOrderDetailsForInvoice method of OrderService.cs file.

[ZPD-5463] - Admin - Category ID was getting changed when a product from a category was removed and then the catalog was published. To resolve this issue, changes were made in Znode_InsertPublishProductIds and Znode_GetPublishProductbulk files.

[ZPD-4637] - Admin - After a catalog was deleted, it was still getting reflected in the Select Catalog popup for Amount Off Catalog promotion. To resolve this issue, changes were made in PreviewHelper.cs and CatalogService.cs files.

[ZPD-4734] - Admin - While creating/editing Admin user account, whenever user used to select a store, a continuous loader used to get displayed. To resolve this issue, FastSelect plugins initialization was conditionally removed from Store TextBox.

[ZPD-4878] - ABSConnector ProductRefresh touch point used to take a very long time to complete. To resolve this issue, changes were made in Znode_ImportValidatePimProductData and Znode_ImportPimProductData SPs

[ZPD-4910] - API - When guest users used to place orders through API using a gift card, API used to shows an error (500 internal server error). To resolve this issue, changes were made in GetUserIdmethod of ZnodeShoppingCart.cs file.

[ZPD-5051] - Web store - The search results were not getting sorted based on the keyword entered by the customer. To resolve this issue, edge_ngram tokenizer was changed to ngram tokenizer.

[ZPD-5060] - Web store - On the Checkout page, incorrect address message was displayed, when the recommended address was selected. To resolve this issue, changes were made in SaveChanges method of User.ts file.

[ZPD-5112] - Admin - When the publish process failed in the background, there was no way to stop the process. To resolve this issue,
- Changes were made in Publish and SaveProductInMongo methods of CatalogService.cs file
- Two new methods CreateJobToPublishProduct and WaitForJobToPublishProduct were added in CatalogService.cs file

[ZPD-5193] - Web store - If any store was never published, the application used to download an error message into a file instead of displaying it on the web store when it was launched. To resolve this issue, the content type of response was changed to HTML in the following methods:
- OnException method of BaseController class
- Application_Error method of MvcApplication class

[ZPD-5452] - Admin - Personalized code was getting displayed in pending orders. To resolve this issue, changes were made in GetOtherDetails method of AccountQuoteService.cs file.

[ZPD-5467] - There was an auto version for JS and CSS in the web store. To resolve this issue changes were made in web.config and bundle.config files and in _layout view.

[ZPD-5516] - Admin & Web store - Single product was getting displayed twice after publishing the single product. To resolve this issue, changes were made in Znode_GetPublishSingleProduct SP.

[ZPD-5570] - Webstore - After removing a coupon, order values were getting displaying incorrectly with PayPal Express payment method. To resolve this issue, changes were made in RemoveCoupon method of CartAgent class.

[ZPD-5571] - Web store - Different order price was getting displayed in Paypal account and an admin account. To resolve this issue, changes were made in RemoveCoupon method of CartAgent file.

[ZPD-5505] - Web store - Shopping cart title was not getting displayed on the shopping cart page. To resolve this issue, changes were made in _shoppingCart.cshtml view file.

[ZPD-4270] - Admin & Web store - Publishing banner to preview and production worked fine, but publish did not work only for preview mode. To resolve this issue, changes were made in DeleteAllCMSEntitiesFromMongo method of PreviewHelper file.

[ZPD-4923] - Admin - When price list was associated with a profile, the application did not allow deletion of the price list. To resolve this issue, changes were made in DeletePortalProfile method of PortalProfileService file.

[ZPD-5024] - Admin - Form successfully created message was not getting displayed when a form was created. To resolve this issue, changes were made in the setTimeout method of FormBuilder.ts file.

[ZPD-5264] - Web store - Three entries of same products were getting displayed on the web store. To resolve this issue, changes were made in Znode_GetPublishCategory and Znode_InsertPublishProductIds SPs.