What’s new in nopCommerce 3.90

NopCommerce 3.90 releases

NopCommerce 3.90 released on Wednesday March 14th 2017. The main changes implemented are aimed at making nopCommerce more store owners and store managers oriented.Eased the work with the platform for different types of users: from beginner merchants to experienced managers. Making it happen, focused on UI and UX and simplified and re-designed admin area.

Highlight features

  • Compliance with PCI DSS 3.2 requirements. Password attempt failure lock-out support (configurable). Do not allow customers to submit one of previously used password (configurable). Passwords must be forced to change at least once every 90 days (configurable).
  • Boolean logic support for discount requirements (“AND” or “OR” or groups).
  • Delay usage of reward points. A store owner can specify period of time after which points should become active.
  • Allow customers to apply multiple discount coupon codes.
  • Allow a store owner to manage access to plugins per customer role (ACL).
  • Allow a store owner to specify a product availability range (will be displayed instead of general “out of stock” message).
  • Bundled products (attributes associated to other products). Option to allow customer to enter quantity.
  • Tier prices now support start and end dates (hence removed “special prices” product properties).
  • Track stock changes of products.
  • Allow a store owners and vendors to reply to product reviews.


  • Further changes on admin area re-design. More user-friendly buttons (not links as before). Re-designed grids. New inputs for currencies, weight, dimension.
  • New re-designed installation page.
  • Added settings indicating whether “default” items (home page, forums, contact us, etc) should be displayed in the top menu
  • Development. Now we use model factories (it makes customization much easier for developers).
  • Now customer can attach files when submitting return requests (scans, additional documents, etc). Disabled by default.
  • Allow a store owner to specify address of vendors.
  • Settings to display news and blog comments per stores.
  • Added approval mechanism for news and blog comments.
  • Simplify admin area. Added “basic-advanced” modes to several more entities (categories, checkout attributes, manufacturers, message templates, topics).
  • Added required hints for all required inputs in admin area.
  • Return requests. Allow searching by custom number, dates, status.
  • Blog and news comments. Allow searching by dates, text, approved status.
  • Customer notifications for failed recurring payments.
  • Combine “Fixed Rate Shipping” and “Shipping by weight” plugins into single one. Upgrade instructions: do not forget to manually delete “/Plugins/Shipping.FixedRateShipping” and “/Plugins/Shipping.ByWeight” directories (they are not used anymore) and replace the plugin «Shipping.Fixed Rate» or «Shipping.ByWeight» by the plugin «Shipping.FixedOrByWeight» in the App_Data/InstalledPlugins.txt file.
  • Combine “Nop.Plugin.Tax.CountryStateZip” and “Nop.Plugin.Tax.FixedRate” plugins into single one. Upgrade instructions: do not forget to manually delete “/Plugins/Tax.FixedRate” and “/Plugins/Tax.CountryStateZip” directories (they are not used anymore) and replace the plugin «Tax.Fixed» or «Tax.CountryStateZip» by the plugin «Tax.FixedOrByCountryStateZip» in the App_Data/InstalledPlugins.txt file.
  • Renamed “Froogle” plugin to “Google Shopping”. Upgrade instructions: manually delete /Nop.Web/Plugins/Feed.Froogle/ directory. Now customers should re-validate the new email address after editing (if “Registration method” is set to “Email validation”).
  • Added a setting indicating when an order status should be marked as “complete” (when just shipped or delivered).
  • Development:

    • Development. Changed the way how plugin views are stored. Now we store them in \Views\file.cshtml. Previously it was \Views\plugin_name_directory\file.cshtml (removed extra directory). It’s much simpler.
    • Development. An additional CSS class for “image squares” attributes.
    • Development. Enable TLS 1.2 support for entire application (instead of adding this support to every single plugin).
    • Development. GetOrdersByIds, GetCustomersByIds, GetProductsByIds methods should ignore deleted records.
    • Development. Marked all methods as “virtual” in controllers.
    • Development. Pass entire newsletter entity to event.
    • Development. Using distributed locks with Redis for exclude TaskScheduler race condition.
    • Development. Added “Delete” events for entities which are just marked as deleted
    • Development. Refactoring of mapping rules (AutoMapper). Now we can multiple mappers (plugin developers can use it). Each mapper should implement IMapperConfiguration interface.
    • Development. Added “UpdateExistingResources” parameter to “ImportResourcesFromXml” method.
    • Development. Changed a DownloadActivationType enum value.
    • Development. Added more “orderby” to service methods. Sometimes DisplayOrder is not enough in some cases.
    • Development. Trim the start space if first letter is uppercase (CommonHelper.ConvertEnum).
    • Development. Add ProductReviewApprovedEvent on editing product review.
    • Development. Add “Customer logged out” event.
    • Development. Mark SendNotification method of WorkflowMessageService as public.
    • A lot of other source code refactoring.

Leave a Reply