News Digest - July 2023

news digest

This post provides an overview of the latest enhancements as of July 2023.

Here are the key highlights:

  • Storefront updates:

    • Improved menus for easier navigation.
    • Addition of useful features to enhance functionality.
    • UI enhancements for a more intuitive and visually appealing experience.
  • New Platform Features:

    • Ability to host multiple sites, allowing for better management of diverse online properties.
    • Implementation of automatic locking for inactive user accounts, bolstering security measures.
    • Performance enhancements resulting in nearly a 20% improvement, ensuring faster and more efficient operations.
    • Updates to the XAPI, Cart, Catalog, and Inventory modules, bringing enhanced capabilities and improved performance.
  • Adding digital products in Vendor portal.

  • Improved blade navigation in Shell.

Storefront

View the enhancements on public demo site

Read more and install Storefront

Design

Chips, Buttons, and Badges sections of the UI-kit have been updated:

image

See the kit

Platform

  • Hosting multiple sites within one Virto Storefront 6.x and vue b2b theme is now possible. For more information, refer to Configuring Multiple Stores with Multiple Domains in Virto Commerce

  • Last login date and time have been added to the User Information.

  • Progress information about Virto Commerce loading is now visible for the users. Previously, when the Virto Commerce application was loading, users would see an empty screen, providing no indication of progress. The recent update allows users to have a clear understanding that Virto Commerce is running and provides insights into the duration of the startup process.

  • The ActiveDirectory module has been updated. Previously, users could be created in the module, but it was not possible to assign roles to them. With the recent update, when customers use Active Directory Single Sign-On, they are now assigned a role. The user role can be configured and assigned in the appsettings.json file.

  • The option to automatically lock inactive user accounts after a specified period of inactivity has been added. This addition aims to enhance security by preventing unauthorized access to inactive user accounts. By automatically locking inactive accounts, the system helps mitigate the risk of potential security breaches or unauthorized activities. The administrator can further unlock these accounts.

  • To enhance and optimize performance, we have integrated the entityframework-extensions library into the Platform. This integration enables the use of BulkSave operations, which significantly improves the efficiency of data storage and retrieval processes. By leveraging this library, we achieved faster and more streamlined operations within the Platform. Note, that this is a paid feature.

The implementation using the entityframework-extensions.net library:

  1. Create a new vc module.
  2. Configure entityframework-extensions.net library.
  3. Create DbContextWithBulkSaveChangesUnitOfWork class to extend the DbContextUnitOfWork and overrides the Commit and CommitAsync methods to use bulk save changes for improved performance.
  4. Overrider DbContextUnitOfWork by DbContextWithBulkSaveChangesUnitOfWork in module initialization.
    /// Use https://entityframework-extensions.net/tutorial-bulk-savechanges
    public class DbContextWithBulkSaveChangesUnitOfWork : DbContextUnitOfWork
    {
        public DbContextWithBulkSaveChangesUnitOfWork(DbContext context) : base(context)
        {

        }

        public async override Task<int> CommitAsync()
        {
            await base.DbContext.BulkSaveChangesAsync();
            return 1;
        }

        public override int Commit()
        {
            base.DbContext.BulkSaveChanges();
            return 1;
        }
    }
public class Module : IModule, IHasConfiguration
{
 ...
    public void Initialize(IServiceCollection serviceCollection)
    {
        // Override models
        AbstractTypeFactory<DbContextUnitOfWork>.OverrideType<DbContextUnitOfWork, DbContextWithBulkSaveChangesUnitOfWork>();
    }
 ...
}

Install latest Platform version

xAPI

  • A new query has been added to allow users to view all orders from their organization. All customers from the organization have access to the query and the orders.

    {
      organizationOrders(organizationId:"testorganizationgid" cultureName:"en-US")
      {
        items
        {
          id
          number
          total
          {
            amount
          }
          status
        }
      }
    }
    
  • Two new features have been added to enhance password management within the system. Firstly, a new query has been added that prompts customers to change their passwords when they sign in.

       {
       user (id:"c20e3e3c-ca36-41fa-ba4c- 
     b5019554bf9f")
     {
       userName
         forcePasswordChange
     }
     }
    

    This ensures improved security by encouraging users to create a new, strong password during their login or after a password reset. Additionally, we have implemented a new mutation that allows users to input and set a new password.

    mutation changePassword ($command: InputChangePasswordType!) {
        changePassword (command: $command) {
            succeeded
          errors {
              description
            }
        }
    }
    

Install the xAPI module

Cart

Install the Cart module

Catalog

Product description fields are now included as separate fields in the index. The Elastic App Search module uses this feature out-of-the-box. The releases for other search engines are expected to follow soon.

Install the Elastic App Search module
Install the Catalog module

Order and Inventory

An inventory reservation service has been added to the Inventory module tto store information about fulfillment centers and their relevant inventory. It also includes a transaction log to track inventory-related activities. As a result of this improvement, when an order is placed, the inventories are deducted from the specific fulfillment center they belong to, rather than the default fulfillment center. If an order is canceled, the inventories are returned to their respective fulfillment centers. This enhancement allows for more accurate tracking of inventory stock changes.

Install the Order module
Install the Inventory module

Vendor portal

  • Bulk delete option for products and offers has been reworked. Bulk delete progress notifications have been added.

  • The option to add digital products has been added.

  • Import improvements including editing and adding options have been introduced.

Shell

  • Blade navigation has been improved. Modules are now dynamically added to the Vue router when the module plugin is initialized in the app by createAppModule method.

    This allows not to specify the path in two places – in the module itself and in the Vue router.

    Products list blade options with its path:

    Vue router config:
    image

  • Now you can open two blades at once via a direct link. Their state is saved after the page is reloaded.

Documentation