Stable Bundle 6: Release notes

Welcome to Virto Commerce Stable Release Bundle v6!

We are thrilled to present the latest Stable Release. This release brings a range of enhancements and updates that will elevate your Virto Commerce experience. To apply these updates, you can utilize the Virto Commerce CLI.

To learn more about Virto Commerce’s Release Strategy, please refer to our detailed Readme.

Let’s take a closer look at some of the key features included in this release:

In this stable release of VirtoCommerce, several important updates and improvements have been introduced to enhance the platform’s functionality and user experience.

:fire: Virto Storefront Features:

  • Receive notifications when a product cannot be added to the cart, ensuring a seamless shopping experience.
  • Multilingual Support: Recommend i18n ally for better multilingual support and broader reach.
  • Streamlined cart management with clear cart event and place order event.
  • Dashboard Improvements: Reuse orders on the dashboard and easily sort exports for increased efficiency.

:fire: Virto Commerce Features:

  • This update focuses on improving error handling, specifically addressing DbUpdateConcurrencyException. This enhancement helps ensure smoother operation and reliability when handling subscription-related tasks.
  • The contract module gets a significant boost with added features. Now, it includes contract status and vendorId, providing more comprehensive contract management.
  • This modules have been updated to offer improved Crud and Search services. These enhancements make importing and managing catalog data more efficient and user-friendly.
  • The payment module receives multiple improvements. It now supports capture and refund operation. These enhancements are designed to optimize payment processing and flexibility.
  • The VirtoCommerce platform itself has undergone numerous updates. These include improved asset editor styles, better DateTime handling, enhanced CRUD services, and various security and error handling enhancements. These changes collectively contribute to a more reliable, efficient, and secure e-commerce platform.

These updates aim to provide a stable and robust foundation for e-commerce businesses, offering improved performance, security, and overall user satisfaction across various aspects of the VirtoCommerce platform and its associated modules.

To explore the detailed information about these features, we invite you to check out our informative News Digests:
:newspaper: May 2023
:newspaper: June 2023
:newspaper: July 2023
:newspaper: August 2023
:newspaper: September 2023

Read Before Update

PostgreSQL Vs Sql Server Comparison

Virto Commerce supports PostgreSQL in addition to SQL Server. Based on our tests, PostgreSQL performs 25-30% faster and consumes less CPU and memory compared to SQL Server:

Metric Sql Server Postgre Sql Diff
VC Instance, RAM, Mib​ 640​ 505​ 21%​
DB utilization, %​ 25%​ 22%​ 3%​
Total Samples, count​ 163 900​ 177 000​ 8%​
Avg Duration (all API calls)​ 190​ 130​ 32%​
Create Order, ms​ 1300​ 930​ 29%​
Add To Cart, ms​ 730​ 490​ 33%​
Get Product, ms​ 499​ 356​ 29%​

Additional Posts

Optimizing Performance: entityframework-extensions.net
Generating C# Client from Virto Commerce Swagger with NSwag
Achieving True DB Agnostic with Virto Commerce: A Journey without Breaking Changes
Elastic Search 8: (Preview) Indexed and Semantic search functionality with v8 of Elasticsearch

Release Notes

vc-module-subscription

v3.401:

  • DbUpdateConcurrencyException in CreateRecurrentOrdersJob.Process

v3.400:

  • Use updated Crud and Search services

v3.202:

  • (DB Agnostic architecture with SqlServer, MySql and PostgreSQL. )- PT-9395 add nodejs-lts support

vc-module-contract

v3.401:

  • Add status and vendorId to contract
  • Added filtering option on contracts list blade
  • Added metaform support on contract details blade

v3.400:

  • Update Crud and Search services

vc-module-catalog-csv-import

v3.400:

  • Use updated Crud and Search services

vc-module-payment

v3.400:

  • Update Crud and Search services

v3.209:

  • add allowDefferedPayment flag

v3.208:

  • Add capture amount to payment capture request

vc-module-tax

v3.400:

  • Update Crud and Search services

v3.204:

  • Add appsettings option to disable FixedRateTaxProvider.
    :
"TaxModule" : { 
         "FixedRateTaxProvider": {"Enabled": false} 
} 

v3.203:

  • DB Agnostic architecture with SqlServer, MySql and PostgreSQL

vc-platform

v3.414:

  • Improve asset editor styles

v3.413:

  • Add UtcDateTimeConverter to convert DateTimeKind.Unspecified to DateTimeKind.Utc when read from the database and back to DateTimeKind.Utc when being saved. Resolves that SQL Server discards the DateTime.Kind flag when storing a DateTime as a datetime or datetime2. This means that DateTime values coming back from the database always have a DateTimeKind of Unspecified.
  • Add DbContextBase class. A derived class with applied UtcDateTimeConverter for all DateTime properties.
  • Apply UtcDateTimeConverter for PlatformDbContext and SecurityDbContext, so DateTime will have DateTimeKind.Utc when revert from DB.

v3.412:

  • Update angular to 1.4.14
  • Fix condition for ‘Import sample data’ widget

v3.411:

  • Don’t use int.MaxValue with search services
  • Add more descriptions for http error codes.

v3.410:

  • Improve generic CRUD services - Update settings extensions

v3.409:

  • (Npgsql.PostgresException (0x80004005): 28000: odyssey: cbae7a56ca16a: user blocked: (unknown database) (unknown user) … at VirtoCommerce.Platform.Data.PostgreSql.PostgreSqlCertificateLoader.CheckDatabaseExist(String sourceConnectionString) at VirtoCommerce.Platform.Data.PostgreSql.PostgreSqlCertificateLoader.Load())

v3.408:

  • Users should not see other people’s notifications

v3.407:

  • Error message when major upgrade id detected. Automated upgrade is not feasible due to a major version release; please opt for a custom upgrade to ensure a seamless transition.

v3.406:
Added IDistributedLockService interface to ensuring only one process is using a particular resource at any given time. The service has two implementations:

  • DistributedLockService - lock mechanism implemented with RedLock, will be registered in DI if RedisConnectionString is set
  • NoLockService - mock service that does nothing, will be registered in DI if RedisConnectionString is not set

v3.405:
adds the security headers to all responses

  • X-Content-Type-Options: nosniff
  • Strict-Transport-Security: max-age=31536000; includeSubDomains - only applied to HTTPS responses
  • X-Frame-Options: Deny - only applied to “document” responses
  • X-XSS-Protection: 1; mode=block - only applied to “document” responses
  • Referrer-Policy: strict-origin-when-cross-origin - only applied to “document” responses
  • Content-Security-Policy: object-src ‘none’; form-action ‘self’; frame-ancestors ‘none’ - only applied to “document” responses

v3.404:

  • Failure on empty PostgreSQL DB initialization

v3.403:

  • Add Custom Styles for Widget with Logo, Header and Text

v3.402:

  • Return an HTTP status code of 409 (Conflict)

v3.401:

  • Get status code if it’s empty

v3.400:
:warning: Breaking changes

We are excited to announce a significant improvement in this release with the refactoring and simplification of the CRUD (Create, Read, Update, Delete) Services. These changes bring enhanced performance and a more streamlined experience for platform users.
Find more detail on Virto Commerce Community

  • Simplify Crud and Search services

v3.318:

  • move default user creation to migration

v3.317:

  • Fix exception if no database already created in PostgreSql

v3.316:

  • (Ability to override the DbContextUnitOfWork)
  • (Bump jQuery from 2.1.4 to 3.7.0)

v3.315: - Add default roles to app settings. The roles will be applied for new Azure Ad SSO accounts.

appsettings.json

 "AzureAd": {
…
"DefaultUserRoles": ["Order manager", "Store manager"],
…
}

v3.314:

  • Add default role to app settings

v3.313:

  • Add job for auto lockout accounts

v3.312:

  • Enhances the startup process of Virto Commerce by adding progress updates and a welcoming message to the console. This improvement provides clear information about the startup process and timings, offering a better user experience for both Developers and IT.

v3.311:

  • Add last login date
  • dynamic property validation

v3.309:

  • (Consistent password verification in the SecurityController)
  • (Fix/return types in external sign-in methods)

v3.308:

  • Add dismiss error message link
  • Add blade.clearError
  • (Assign permissions section on New Role blade displays unsorted list of modules)
  • (Rest API returns Unauthorized instead of Forbid. )

v3.307:

  • Add “AllowApiAccessForCustomers” setting. Enables or disables API access for customers. By default, false. When set to true, it allows customers to access the API endpoints and perform authorized actions.

App settings section: Authorization:AllowApiAccessForCustomers.

 "Authorization": {
...
    "AllowApiAccessForCustomers": true,
...
  },

v3.306:

  • Fix ResetPasswordAsync and ChangePasswordAsync

v3.305:

  • Use first IModule from assembly only. After the fix, The platform will use optional ModuleType from manifest to resolve multiple IModule from assembly. )- Added robots.txt with restrictive policy for backend environments.

v3.304:

We are excited to announce the release of Virto Commerce Platform with Log and Telemetry Agnostic Approach.

With this release, we have introduced support for Serilog libraries for logging, which brings several benefits over traditional logging libraries.

Serilog allows users to log structured data that is easy to analyze, making it simpler to troubleshoot and identify issues in real-time. Additionally, it offers a range of flexible output options, including logging to files, databases, and cloud services, making it a versatile choice for handling logs.

BREAKING CHANGES: As a result of this update, the Azure Application Insights feature has been removed from the Platform. If you previously used this feature, you can install the App-Insights module from GitHub - VirtoCommerce/vc-module-app-insights: Writes logs events and telemetry to Microsoft Azure Application Insights to continue using Azure Application Insights.

To configure logging with Serilog, you can refer to the Serilog documentation or the vc-module-app-insights documentation at GitHub - VirtoCommerce/vc-module-app-insights: Writes logs events and telemetry to Microsoft Azure Application Insights.

In addition to the log changes, we have also updated the XAPI module to Release 3.314.0 please update it as well.

v3.301:

  • fix for lock user account when db provider is PostreSql
  • Add isolation for white-space: pre-wrap for settings description.

v3.300:

  • Preserve whitespace in settings descriptions
  • Fix roles list sorting
  • Improve scrollbars ux
  • Fix password validation messages

v3.299:

  • redesign login page
  • username, user name
  • Fixed localization

v3.297:

  • (fixed posgresql commands to load the certificate)

v3.296:

  • (Add YAML support for OpenAPI 3 and Swagger UI.)
  • Permission doesn’t applied for list of available apps

v3.295:

  • (Revert back PT-10895 by multiple issues with XAPI and UserManager)

v3.294:

  • (login/email overlaps text in modal )

v3.293:

  • (Import Data on PostgreSql. Cannot write DateTime with Kind=UTC to PostgreSQL type ‘timestamp without time zone’)

vc-module-quote

v3.400:

  • Use updated Crud and Search services

v3.216:

  • Bump NuGet versions: AutoMapper 10.1.1, Mediatr 9.0.0.
  • Remove using the obsolete interface for services

vc-module-customer-review

v3.400:

  • Update Crud and Search services

v3.214:

  • Update ExperienceApi version to 3.300
  • Bump NuGet versions: AutoMapper 10.1.1, Mediatr 9.0.0.
  • Remove using the obsolete interface for services

vc-module-assets

v3.400:

  • Update Crud and Search services

vc-module-catalog-publishing

v3.400:

  • Use updated Crud and Search services

vc-module-store

v3.401:

  • add EmailVerificationRequired setting

v3.400:

  • Update Crud and Search services

v3.211:

  • Code smell
  • Rest API returns Unauthorized instead of Forbid.

v3.210:

  • Moved the class StoreSelectedScope from VirtoCommerce.StoreModule.Web.Authorization to VirtoCommerce.StoreModule.Core.Security. This change allows external modules to reference StoreSelectedScope when performing validations against permissions that are scoped by StoreId. Previously, StoreSelectedScope was sealed in the Web project, which prevented the creation of new authorization handlers that could perform additional checks against permissions using this type of scope. By moving it to the Core project, we have addressed this limitation and provided a simple fix that expands the permissions model.

v3.209:

  • DB Agnostic architecture with SqlServer, MySql and PostgreSQL - fix code smell - Normalize line endings

vc-module-avatax

v3.401:

  • (clean DB context initialization from the module. no db relation more. )

v3.400:

  • Use updated Crud and Search services

vc-module-gdpr

v3.400:

  • Use updated Crud and Search services

vc-module-profile-experience-api

v3.409:

  • Use correct authorization error codes

v3.408:

  • verify email on register by invitation

v3.407:

  • add passwordExpiryInDays field

v3.405:

  • (ResetPasswordEmailNotification and RegistrationInvitationEmailNotification ignored Store customization. )

v3.404:

  • modify lock/unlock operations

v3.403:

  • cleanup organization and contact on account creation error

v3.402:

  • add email registrations flows

v3.401:

  • Resend email confirmation link by userId in sendVerifyEmail command. If userId is specified, the email property will be ignored. If a user is authorized then userId and email will be taken from the current profile.
mutation ($command: InputSendVerifyEmailType){
sendVerifyEmail(command: $command)
}

{
"command": {
"userId": "4162ff51-c880-4e42-bc4b-4bfd120a0bdf",
"storeId": "B2B-store",
"languageCode": "EN-US"
}
} 

v3.400:

  • Use updated Crud and Search services

v3.303:

  • Add encode for user email in inviteUser

v3.302:

  • add force password change flag to user type and ‘change password’ mutation

v3.301:

  • (Anonymous has access to list of contacts or organizations)

v3.300:

  • Bump NuGet versions: AutoMapper 10.1.1, Mediatr 9.0.0.
  • Remove using the obsolete interface for services

vc-module-experience-api

v3.411:

  • Use correct authorization error codes
Code Message Recommended Action
Unauthorized Anonymous access denied or access token has expired or is invalid. Redirect to Signin page
Forbidden Access denied. Display Access Denied page
Forbidden User doesn’t have the required permission ‘name’. Display Access Denied page
UserLocked This user is locked. Display Error page
PasswordExpired This user has their password expired. Please change the password using ‘changePassword’ command. Open Change Password form

v3.410:

  • fix incorrect line item FF center

v3.409:

  • (Discounts are calculated from subtotal)

v3.408:

  • PT-12811: set default price when adding null priced products to wishlist.

v3.407:

  • parse minVariationPrice from an array of strings

v3.406:

  • Add status to order shipment line item.

v3.405:

  • add check for locked user in order/purchase schemas

v3.404:

  • (Make availablePaymentMethods as extendable)

v3.403:

  • lower validation requirement for bulk wishlist operation

v3.402:

  • Added ShippingMethodType to Cart and Order Shipment yype

v3.401:

  • (isBuyable and isAvailable return always false. if request a product without the price)

v3.400:

  • Use updated Crud and Search services

v3.332:

  • add product min variation price
  • hide inactive categories from search
{
  products(storeId:"Electronics" productIds:["6e7a31c35c814fb389dc2574aa142b63"] currencyCode: "USD")
  {
    totalCount
    items {
      minVariationPrice {
        actual {
          amount
        }
      }
    }
  }
}

v3.331:

  • load child categories in category query
  • remove multiple items from cart

v3.330:

  • update cart organizationId

v3.329:

  • Add organizationOrders query

v3.328:

  • (XAPI returns Zero Products if Catalog Personalization Module is not installed.)

v3.327:

  • add force password change check in order and purchase schemas

v3.326:

  • pass store Id to ‘product’ cart line item field

v3.325:

  • reload cart aggregate after addOrUpdateCartShipmentCommand
  • set current date for pricelist assignment evaluation

v3.324:

  • convert ‘price’ filter to use currency

v3.323:

  • add required StoreId param and remove Fields param from productSuggestions query

v3.322:

v3.321:

  • Add product suggestions

v3.320:

  • (The cart allows proceeding to checkout with a product with 0 price.)

v3.319:

  • (The cart allows proceeding to checkout with a product with 0 price.)

v3.318:

v3.317:

  • (User can merge carts with the same id)

v3.316:

v3.315:

  • add Status to OrderLineItemType
  • filter out hidden properties
  • Unable to resolve service for type ‘Microsoft.ApplicationInsights.TelemetryClient’ if App Insight module is not installed.

v3.314:

  • Include Microsoft ApplicationInsights assemblies into module package after Platform 3.303 release with Virto Commerce Platform with Log and Telemetry Agnostic Approach.

v3.312:

  • update app insights package

v3.309:

  • Add comment to cart shipments and payments

v3.308:

  • Add get menu query

v3.307:

  • update Marketing module (personal coupons)

v3.306:

  • (error trying to resolve empty ‘images’, ‘assets’ )
  • (fix currency symbol in Wishlists)- (Add ProductType to Variation Schema)
  • (Suppress Cart Aggregate Load recursively.)
  • (Cart Language Code never changed after creation)
  • pass userId for all cart’s get products queries

v3.304:

  • (wrong price in the cart if product has several price lists )

v3.303:

  • (Actualize Vendor Id in the cart if product’s vendor information is changed. )

v3.302:

  • load product property attributes via service

v3.301:

  • Add product personalization

vc-module-sitemaps

v3.400:

  • Use updated Crud and Search services

v3.208:

  • (DB Agnostic architecture with SqlServer, MySql and PostgreSQL)

vc-module-notification

v3.402:

  • (Empty Store Notification log )

v3.401:

  • Empty preview in notification

v3.400:

  • Update Crud and Search services

v3.219:

  • Add default layout selection

v3.218:

  • Cannot write DateTime with Kind=Local to PostgreSQL.
  • Empty body if use Smtp provider

v3.217:

  • Update readme and module manifest
  • The email validator doesn’t allow to enter addresses with a plus

v3.216:

  • Added the ability to register notification layouts at the start of the application, by analogy with the registration of notifications.

Example of usage:

var notificationLayoutRegistrar = appBuilder.ApplicationServices.GetService<INotificationLayoutRegistrar>();
var layoutTemplatesDirectory = Path.Combine(ModuleInfo.FullPhysicalPath, "NotificationLayoutTemplates");
notificationLayoutRegistrar.RegisterLayoutWithTemplateFromPath(ModuleConstants.Notifications.DefaultLayoutName, layoutTemplatesDirectory, true);

var notificationRegistrar = appBuilder.ApplicationServices.GetService<INotificationRegistrar>();
var defaultTemplatesDirectory = Path.Combine(ModuleInfo.FullPhysicalPath, "NotificationTemplates");
notificationRegistrar.RegisterNotification<AgencyUserInvitationEmailNotification>().WithTemplatesFromPath(defaultTemplatesDirectory).WithLayout(ModuleConstants.Notifications.DefaultLayoutName);
notificationRegistrar.RegisterNotification<SupplierSpecialRequestEmailNotification>().WithTemplatesFromPath(defaultTemplatesDirectory).WithLayout(ModuleConstants.Notifications.DefaultLayoutName);
notificationRegistrar.RegisterNotification<UserSignUpRequestEmailNotification>().WithTemplatesFromPath(defaultTemplatesDirectory).WithLayout(ModuleConstants.Notifications.DefaultLayoutName);

v3.215:

  • Migrate away from SmtpClient

vc-module-inventory

v3.404:

  • (DateTime values coming back from the SqlServer database always have a DateTimeKind of Unspecified. )

v3.403:

  • Implement IIndexSchemaBuilder

v3.401:

  • Add inventory change events

v3.400:

  • Update Crud and Search services

v3.216:

  • Add inventory reservation functionality

v3.215:

  • product_availability into index document

vc-module-content

v3.407:

  • (Improve asset editor)

v3.406:

  • (Hidden Page Language Selection)

v3.405:

  • add default indexable properties

v3.404:

  • Migrate to CRUD services

v3.403:

  • Fix ArgumentNullException

v3.402:

  • Fix search criteria corruption

v3.400:

  • Use updated Crud and Search services

v3.218:

  • generate correct url for uploaded asset

vc-module-webhooks

v3.209:

  • Auth Support: Basic & Bearer & Custom

vc-module-catalog-personalization

v3.400:

  • Use updated Crud and Search services

v3.205:

  • (Rename Tags to User Groups)

vc-module-elastic-app-search

v3.212:

  • Use a special sorting field name (_score) to order by relevance

v3.211:

  • Error when user use filter by price

v3.210:

  • Add suggestions - Don’t throw an exception when deleting an index and it doesn’t exist

v3.209:

  • Using meta engines with swap engines

v3.208:

  • Add App Menu

ES-App

vc-module-image-tools

v3.402: Fix NullReferenceException

v3.401:

  • Update Crud and Search services

v3.208:

  • (Only one thumbnail job can be executed at one time (manually or by schedule).)

vc-module-catalog

v3.408:

  • (Error GraphQL.Execution.UnhandledError: Error trying to resolve field ‘associations’. System.InvalidCastException: Unable to cast object of type ‘System.Int64’ to type ‘System.Int32’ when user get associations for product on PostgreSql.)

v3.407:

  • (DateTime values coming back from the SqlServer database always have a DateTimeKind of Unspecified. )

v3.406:

  • set correct property name for tags-input control

v3.405:

  • (Virtualize product status indexing)- migrate PropertyDictionaryItemSearchService to CRUD

v3.404:

  • Fix search criteria corruption
  • (If SearchInVariations is false, ProductSearchRequestBuilder doesn’t add is product filter. )

v3.403:

v3.402:

  • Fix product changes logging

v3.401:

v3.400:

  • inherit hidden category status - Implement IIndexSchemaBuilder - Update Crud and Search services

v3.277:

  • (Fix reviews inheritance in catalog product)

v3.276:

  • add catalog language sort

v3.275:

  • update product properties partially

v3.274:

  • Add description index document fields
  • Fix response type for GET /api/catalog/products

v3.273:

  • (Rest API returns Unauthorized instead of Forbid. )

v3.272:

  • Reduce memory consumption when indexing products and categories

v3.271:

  • Index Product name as a suggestable field

v3.270:

  • (CategoryLink.Category without JsonIgnore attribute breaks json serialization. )

v3.269:

  • Add product suggestions

v3.268:

  • (Returns Custom Aggregations)

v3.267:

  • Add Product availability into Index document

v3.266:

  • add boolean property initialization

v3.265:

  • Delete linked products before deleting virtual catalog

v3.264:

  • (Delete permission instead of Read was checked for api/catalog/listentrylinks/search)

v3.263:

v3.262:

  • Add DisplayOrder property to Property model

v3.261:

  • Make index IX_Code_CatalogId unique on SQL Server - (Update to support NodeJS 18 LST and WebPack 5)

IMPORTANT

Before installing this update you should find and fix all duplicates, otherwise platform will not start.

select CatalogId, Code, count(Id)
from Item
group by CatalogId, Code
having count(Id) > 1

vc-module-customer

v3.405:

  • (System.NullReferenceException if Roles collection is null)

v3.404:

  • (DateTime values coming back from the SqlServer database always have a DateTimeKind of Unspecified )

v3.403:

  • (Implement IIndexSchemaBuilder)

v3.402:

  • IndexingJobs.IndexChangesJob does not trigger after changing the user role. Added handlers registration for user events.

v3.401:

  • Fix search criteria corruption

v3.400:

  • Update Crud and Search services

v3.226:

  • Add security cache region cache expiration

v3.225:

  • (Fix double id parameter)

v3.224:

  • (Rest API returns Unauthorized instead of Forbid)

vc-module-event-bus

v3.400:

  • Update Crud and Search services

v3.203:

  • DB Agnostic architecture with SqlServer, MySql and PostgreSQL
  • Normalize line endings

vc-module-export

v3.205:

  • Rest API returns Unauthorized instead of Forbid. *

vc-module-cart

v3.402:

  • (DateTime values coming back from the SqlServer database always have a DateTimeKind of Unspecified)

v3.401:

  • Returns wrong shipping method by code.

v3.400:

  • Update Crud and Search services

v3.221:

  • add cart deletion override documentation
  • add delete obsolete carts service

v3.220:

  • Add MaximumCountPerDeleteObsoleteCartsJobExecution setting

v3.219:

  • Add comment to cart shipments and payments

v3.218:

  • (Set Product Name length to 1024 )

v3.217:

  • (Move SQL Raw Code to DB providers.)

v3.215:

  • (syntax error in Mysql in remove cart query)

vc-module-search

v3.402:

  • (Add extension methods for dynamic properties indexing)

v3.401:

v3.400:

  • Prepare for scalable indexation

v3.223:

  • add IsSuggestable field to IndexDocumentField and additional params to suggestion request

v3.222:

  • Add suggestions

v3.221:

  • Fix search phrase unescaping

v3.220:

  • (Merge for field for IsCollection only)

v3.219:

  • Fix problem with progress bar value, add warning

vc-module-core

v3.400:

  • Update dependencies

vc-module-elastic-search

v3.400:

  • Implement ISupportIndexCreate

v3.214:

  • add suggestions

v3.213:

  • Fix empty result in GetMappingAsync()
  • Fix errors when calling UpdateMappingAsync()
  • Fix mappings after swap
  • Fix and optimize GetPropertyNames()
  • Fix facets that were always in lower case
  • Fix compilation warnings
  • Fix tests
  • Support running tests on Elasticsearch 8.7

v3.212:

  • rewrite index swap to atomic operation

v3.211:

  • Add the ability to set separate scopes for different document types

vc-module-pricing

v3.403:

  • (DateTime values coming back from the SqlServer database always have a DateTimeKind of Unspecified. )

v3.402:

  • make field minVariationPrice collection and retrievable

v3.401:

  • Implement IIndexSchemaBuilder

v3.400:

  • Update Crud and Search services

v3.221:

  • Index min variation price

v3.220:

  • (Incorrect TotalCount in GET /api/catalog/products/prices/search when use Keyword filter. )

vc-module-marketing

v3.400:

  • Use updated Crud and Search services

v3.211:

  • (Rest API returns Unauthorized instead of Forbid.)

v3.210:

  • add personalization to coupons

vc-module-shipping

v3.402:

  • missing filters for Transient Shipping Method.

v3.401:

  • Added Shipping Method name and description properties

v3.400:

  • Update Crud and Search services

v3.203:

  • DB Agnostic architecture with SqlServer, MySql and PostgreSQL

vc-module-order

v3.412:

  • bind current value directly in ui-select-match

v3.411:

  • (DateTime values coming back from the SqlServer database always have a DateTimeKind of Unspecified. )

v3.410:

  • Extend filter blade with “With templates” filter to display order templates
  • IsPrototype is missing in Index Document- Error when request Order Template by Id

v3.409:

  • Implement IIndexSchemaBuilder
  • (Missing BeforeSaveChanges and AfterSaveChangesAsync on SaveChangesAsync )

v3.408:

  • (UI disabled when user try to create payment/shipment document )

v3.407:

  • (Capture not showing in dynamic properties list)

v3.406:

  • Add distributed lock for Capture and Refund API.

PaymentDistributionLockOptions are configurable via appsettings.json

...
  "Orders": {
    "PaymentDistributedLockOptions": {
      "LockTimeout": "00:00:30",
      "TryLockTimeout": "00:00:30",
      "RetryInterval": "00:00:01.000"
    }
  }
...

v3.404:

  • (User does not get access to the order dashboard after refresh page )

v3.403:

  • Fix search criteria corruption

v3.402:

  • (Eliminate conflict between VirtoCommerce.OrdersModule.Core.Model.Money class and VirtoCommerce.CoreModule.Core.Currency.Money)

v3.401:

v3.400:

  • Update Crud and Search services

v3.247:

  • (extend ShipmentItem with Status)- (Custom Dialog for Concurrency Conflict)

v3.246:

  • dashboard error on PostgreSQL

v3.245:

  • Fix broken MySql migration

v3.244:

  • add InitialProcessingStatus

v3.243:

  • Add Handle Concurrent Update and Retry Policy for Capture and Refund - (Allow capture for payments that are in Paid status )

v3.242:

  • (Entity Framework Core RowVersion column not updating using PostgreSQL)

v3.240:

  • (OrganizationId and OrganizationIds are missed in CustomerOrderSearchCriteria)

v3.239:

  • Add new inventory reservation handler

v3.238:

  • change cancel operation canExecuteMethod

v3.237:

  • remove capture fix
  • (Incorrect work with order, when 2 users try to update one order)

v3.236:

  • (Rest API returns Unauthorized instead of Forbid. )

v3.235:

  • UpdateOrder
  • check original order in authorization handler

v3.234:

  • Add permission scopes authorization for delete operation

v3.233:

  • Add capture order operation

v3.232:

  • Extend Refund API with Transaction Correlation Id

v3.231:

  • Fix order fee calculations

v3.230:

  • Add comment to cart shipments and payments

v3.229:

  • (Product Name has different length than in Catalog)

v3.228:

  • Extend order line item with status - mysql money type for Refund

v3.227:

  • PT-11336: display refund message and refund reason, add delete refund document

v3.226:

  • add timestamp to customer order entity (and added Refund migrations for Postgre and MySQL)

v3.225:

  • Add capture and refund operations
  • Assign any employee as responsible

vc-module-dynamic-associations

v3.400:

  • Use updated Crud and Search services

v3.202:

  • DB Agnostic architecture with SqlServer, MySql and PostgreSQL

vc-theme-b2b-vue

v1.38.0

  • add notification when product can not be added (#712)
  • blocked page (#705)- add height settings to the main page (#707)
  • add slider height breakpoints (#682)- add height settings (#703)
  • recommend i18n ally (#701)- add clear cart event (#698)
  • add place order event (#697)
  • reuse orders on dashboard (#710)
  • sort exports (#711)
  • add global component types (#706)
  • remove fontawesome (#700)
  • change settings for builder (#656)
  • order & quote statuses width in tables (#721)
  • add billing address if shipping address is empty (#708)
  • implement order-status tooltip (#704)
  • English locale (#699)
  • package.json final empty line (#702)
  • remove trailing comma in settings.json (#696)
  • fix paths for app styles (#715)
  • support postcss with tailwind in vs code (#714)

v1.37.0

  • add space between header and footer while loading (#688)
  • ask to save wishlist changes when user leave (#685)
  • orders and quotes consistent date format (#686)
  • copy SKU to clipboard (#675)
  • refactor password confirmation form fields validation messages (#679)
  • add await for save changes (#694)
  • call save changes dialog if other list opens (#693)
  • add lazy loading default value (#690)
  • format order and quote created date (#692)
  • format product date properties (#691)
  • support min quantity when add to wishlist (#689)
  • add alert margin (#683)
  • change password form errors localization (#687)
  • tsconfig (#684)
  • fix quotes on order filtering by status (#681)
  • remove lazy for large content paint images (#677)
  • load missed fields (#680)
  • fetch wish lists after add default one (#673)
  • improve resend link functionality (#678)
  • filter by status “payment required” (#672)
  • update order status after payment (#674)
  • use modern image formats (#671)
  • apply automatic linter formatting (#676)
  • node.js 18, storybook 7 and other dev dependencies upgrade (#665)

v1.36.0

  • implement resend email confirmation link functionality (#670)
  • add support of mandatory email confirmation after registration (#663)

v1.35.0

  • show pay now button for payment required status (#664)
  • redirect to welcome page after registration (#657)
  • allow to by an untrackable physical product (#647)
  • implement new design for vc-alert (#654)
  • notify user unexpected error (#649)
  • open category/search page product details page in a new tab (#648)
  • open return url in other tabs (#644)- force password change (#635)
  • change password method (#653)
  • sync behavior of sign in and sign up form (#667)
  • edit-quote save changes button condition (#666)- quote form validation (#659)
  • untrackable wishlist item add to cart component behavior (#661)
  • fix members page styles (#662)
  • fix mobile orders filters buttons (#660)
  • open product with variations in a new tab by click on variations button (#658)
  • fix top elements side space (#655)
  • remove error alert in sign in form (#652)
  • fix color generation (#651)
  • place css variables in style tag (#646)
  • generate routes hangs up (#650)
  • add hidden item height to scrollable list (#643)

v1.34.0

  • expand broadcast functionality (#640)
  • implement single request for add to wishlists (#639)
  • line item multiselect (#634)
  • add builder.io support (#629)
  • Add “show all” button to facet filter (#632)
  • reduce requests number on create new wishlists (#642)
  • do not update equal shipping/billing address on change (#638)
  • show payment success buttons on mobile (#637)
  • update setup section in README.md (#631)

v1.33.0

  • quote form validation (#625)
  • add sync of browser tabs when the shopping cart changes (#622)
  • clear compare list confirm modal (#619)
  • add auto-generation of the routes.json file (#618)
  • update wishlist-line-items (#617)
  • add synchronization of browser tabs when authenticating (#614)
  • print from add-bulk-items-to-cart-results-modal (#613)
  • edit corporate customer role (#611)
  • quote form validation (#630)
  • edit-quote save changes (#628)
  • star status, when adding an item to wishlist (#624)
  • duplicated fetchProducts query (#623)
  • print list name in add-bulk-items-to-cart-results-modal (#620)
  • show zero price products and empty categories in search results based on theme settings (#616)
  • truncate long email address at company members list (#615)

v1.32.0- update order-line-items (#604)

  • add password tips (#603)
  • add settings for search static content (#595)
  • implement vc-alert design (#601)
  • implement vc-button new design (#596)
  • show modal when a customer tries to add deleted products to quote from cart (#597)
  • show the theme modal cobfirmation modal on personal address delete (#594)
  • hide account menu addresses item for a corporate customer (#593)
  • return cart details in cart mutations (#585) (#590)
  • make address record readable on select address modal (#584)
  • separate personal and corporate addresses on edit quote page (#583)
  • implement design for product print (#582)
  • add serach results for static pages *
  • add suggestions api with navigation *
  • move API folder (#600)
  • prevent exponent input for cart items quantity fields (#612)
  • rename stories (#610)- vc-popup ios issue (#609)
  • vc-popup scroll issue (#608)- buttons (#607) (#606) (#599)
  • vc-container paddings (#605) (#602)- login form (#598)
  • redo suggestions query *
  • display search template condition *
  • a5 printing issue (#592)
  • print layout (#589)
  • hide products with zero price with different currencies (#587)
  • personal address appearance (#588)
  • change specifications title on product page (#586)
  • catalog menu (#580)
  • quote statuses (#576)

v1.31.0

  • display digital products in compare list (#573)
  • hide empty categories at catalog category selector (#572)
  • implement search facet values (#559)
  • add notification after saving quote changes (#563)
  • change text label from creates date to created date on order details page (#562)
  • change order status badge on account order details page (#561)
  • update dashboard orders statuses appearance (#560)
  • implement sticky filters sidebar for categories (#547)
  • implement quote-status component (#558)
  • product cards at home page for mobile (#571)
  • handle blur on add-to-cart (#557)
  • show mobile clear cart button (#566)
  • tsconfig syntax issue with trailing comma (#554)
  • make facet search case insensitive (#565)

v1.30.0

  • add ability to enable hotjar tracking (#552)
  • use link list for mobile catalog menu (#545)
  • use filter ‘availability:InStock’ (#543)
  • add catalog link to product breadcrumbs (#542)
  • wishlist save changes (#535)
  • hide catalog sidebar local search (#540)
  • hide results number on loading (#541)
  • implement order-status component (#539)
  • use link list for catalog drop-down menu (#538)
  • add VcBadge component (#537)
  • ui-kit color palette (#536)
  • fix add to cart component (#556)
  • build (#555)
  • buttons on wish list details page (#544)
  • search-bar dropdown inner scroll (#534)

v1.27.0- load only current category with parent and children for category selector (#531)

  • add setting for sorting product filters (#525)
  • skip shipping step for digital products (#521)
  • open quote details in a separate tab (#522)
  • change email label on address form (#523)
  • localization of product properties in the wish list (#533)
  • fix checkout ui issues (#530)
  • boolean value of product property on order, quote, wishlist and compare page (#524)
  • boolean value of product property on product, category and cart page (#520)

v1.26.0

  • add translations of cart validation errors (#516)
  • vc-add-to-cart, vc-input (#517)
  • add to cart component (#519)
  • product details properties (#514)

v1.25.0

  • update home page slider (#515)
  • add all wishlist items to cart (#510)
  • show digital product in catalog (#512)
  • add autocomplete and arrow navigation to vc-select (#511)
  • add vc-list (#501)
  • vc-button (#502)
  • replace useDomUtils with useScrollLock from vueuse (#506)
  • vc-address-line (#503)
  • use useElementVisibility from vueuse (#507)
  • vc-table (#499)
  • sorting (#476)
  • files structure for search and related (#475)
  • vc-address-selection styles (#513)
  • property label (#509)

vc-storefront

v6.27.0

  • (An blocked user received the error code email_verification_is_required. Extend IsUserLockedByRequiredEmailVerificationSpecification with Store Setting checking. email_verification_is_required returns if cs _user.Contact.Status == "Locked" && !_user.EmailConfirmed && store.Settings.GetSettingValue<bool>("Stores.EmailVerificationEnabled", false) && store.Settings.GetSettingValue<bool>("Stores.EmailVerificationRequired", false) )

v6.26.0

  • Refactored and improved error codes for the locked user. POST /account/login API.
Code Condition Default Message
username_or_emailIs_required login.UserName == null && login.Email == null Please provide a username or email
login_failed user == null Login attempt failed. Please check your credentials.
email_verification_is_required loginResult.IsLockedOut && user.Status == “Locked” && !user.EmailConfirmed; Email verification required. Please verify your email address.
user_is_temporary_locked_out loginResult.IsLockedOut && user.LockoutEndDateUtc != DateTime.MaxValue.ToUniversalTime() Your account has been temporarily locked. Please try again after some time.
user_is_locked_out loginResult.IsLockedOut Your account has been locked. Please contact support for assistance.
login_failed !loginResult.Succeeded Login attempt failed. Please check your credentials.
user_cannot_login_in_store NOT var result = _user.IsAdministrator || _user.StoreId.IsNullOrEmpty(); if (!result) { result = obj.TrustedGroups.Concat(new { obj.Id }).Contains(_user.StoreId); } return result; Access denied. You cannot sign in to the current store
password_expired user.PasswordExpired Your password has been expired and must be changed.
user_not_found user.Contact == null User not found. Please ensure you’ve entered the correct information.

v6.24.0

  • Add spa routes to return correct http status (#650)

v6.23.0

  • add PasswordExpired to user dto converter (#649)
  • add API method to get password requirements (#648)

v6.22.0

  • Add last login date (#647)

v6.21.0

  • Enable range processing in theme assets file result (#646)- 523 error by using PhysicalFileProvider instead of PhysicalFilesWatcher.

v6.20.0

  • Keep operator for multiple login on behalf
  • Add /account/impersonate/reset to revert back to original account after impersonation.
  • Error page was displayed instead of Access Denied page.- condition is wrong

v6.16.0

  • (“return” query string is used instead of “returnUrl” for Login on Behalf)

v6.15.0

  • add health check to connection to platform (#641) (#643)

v6.14.0

  • use full path to search page (#638)

1 Like

Hello,

I have done a virto upgrade to the latest version. While testing in local I am facing this indexing issue. I am not finding the server in hangfire. Is there any setting or anything I have to add?

Do you see any errors in the log?