January 10, 2023 — 1.2252 Service Update

Production Tenant Features and Bug Fixes

As the first production release after the holiday season, this includes all updates released to sandboxes during code freeze:

1.2248 Updates

Subscriptions

  • Subscription Coupons Update: Coupons are now better supported in subscriptions and one-time updates. On the Update Next Order Only page, enter one-time or subscription-only coupon codes that will only be applied to the next continuity order (compared to adding a new coupon to the regular subscription, which will apply in perpetuity). When a coupon is applied to either the subscription or the next order only, pricing will be re-evaluated and updated.

Search

  • Display Price Range: The price range is now displayed on collections in merchandizing rules results.
  • Capitalized Rule Codes: You can now enter merchandizing rule codes with upper case letters, which will not affect the behavior.
  • Configuration Descriptions: You can now enter a description for a configuration on the Search Configurations edit page, which will be displayed along with the name.
  • UI Improvements: The font of text on the merchandizing rules preview and edit pages, as well as the drop-down menu of table rows, has been updated to match the rest of the interface. The colors of redirect buttons have also been updated on the Search Term Redirect page.
  • Search by Rule Code: The Merchandizing Rules API now supports searching by rule codes. Making a GET call such as commerce/catalog/admin/searchmerchandizingrules/?q=123 will return merchandizing rules with 123 in either the rule name or the code.
  • Personalization ID Validation: The Personalization ID (aka Personalization Experience field) no longer allows you to enter whitespaces in Site Search, Product Suggestion, and Listing as spaces are not intended to be supported.

Bug Fixes

ServiceResolution
InventoryA generic error message was intermittently displayed when trying to load the Merchandizing Rules page from a category, due to the Site ID not being properly passed to the page. This has been corrected so that the page will successfully load.
OrdersCustomer billing addresses occasionally changed after their order was placed, as the one-time alternate shipping address was switched to the new default. This has been fixed so that shipping addresses will not be erroneously marked as the customer’s billing address.
SearchWhen a filter contained a category and another expression, merchandizing rules would not be applied. This has been fixed so that merchandizing rules are properly applied for these filters as long as there is a single category (as expected of a category listing page).
SearchA generic error message was intermittently displayed when trying to load the Merchandizing Rules page from a category, due to the Site ID not being properly passed to the page. This has been corrected so that the page will successfully load.

Restricted Content

Internal Details

Find more information about the client-facing updates at these Jira tickets:

Find more information about the client-facing bug fixes at these Jira tickets:

  • Inventory SFTP Connection Issue: CHAR-4174  (reported by The Level Group)
  • Order Billing Address Changing: COM-6280  (reported by Company C)
  • Merchandizing Rules Not Loading: CAT-1992 (reported by Sundance Catalog)
  • Merchandizing Rules w/ Filters: SU-3206

1.2246 Updates

Catalog

  • Quick Edit Hover Message: When the product table on the Quick Edits page is locked, a hover message is now displayed to make it clearer that you can’t interact with it until you click the Edit Selection button.

Subscriptions

  • Clear Updates Button: When editing a subscription’s next continuity order, you can now click Clear Updates at the top to remove all of these one-time order changes. This will take you back to the original subscription details page where you can click Update Next Continuity Order Only again to start a new version.
  • Reset Order Date Setting: A new Subscription setting, Order Now Resets Next Order Date, allows you to determine whether or not the subscription’s next order date is recalculated when you click Order Now to immediately create an order from the subscription. If toggled on, the next order date will be reset based on the current date and frequency. If not toggled on, the next order date that already exists will remain unchanged.

Bug Fixes

ServiceResolution
CatalogSaving a product in Admin would remove multi-value text property values from that product, even though it could be successfully saved via API. This was due to the interface not supporting multiple values for a text-box attribute. This has been fixed so that multi-value properties are not wiped by the Admin when saving a product and the attributes can be used as intended.
InventoryShipments could not be placed in Backorder when submitting orders to an inventory tag with zero inventory available. Instead, the shipment would be placed in Ready and the inventory was decremented from the tag, causing a negative amount. This has been fixed so that shipments will fall to Backorder when there isn’t inventory available for the applicable tag or inventory channel.
OrdersWhen creating an order from the Admin UI, only the first 25 available locations were displayed in the fulfillment options. Pagination on this menu has been added so that you can now click to see more results and select other locations from farther down the list.
ReturnsThe payment.refunded event was not being triggered after performing a refund from the return page of the Admin UI. This has been corrected so that the event is sent after either a refund has been issued or a return initiated.
Site BuilderA generic error message was experienced when trying to save changes to facets in the Site Builder, even though the facet would be successfully updated. This was due to a timeout that occurred with a large number of facets, but did not prevent an individual facet from being updated. Enhancements have now been made to facet performance so that this error is no longer displayed.

Restricted Content

Internal Details

Find more information about the client-facing updates at these Jira tickets:

The following enhancements are internal-only and not exposed to clients.

  • COM-6672: When submitting orders, the new Allocation Status API now validates whether an item got reserved or not.
  • CHAR-4383: A limit of 1500 results has now been added to the pageSize value of the Query Inventory API, improving potential inventory performance and making the API more secure when called from the storefront.
  • CHAR-4355: A new checkbox has been added to the tenant configurations of the Coex Inventory UI, allowing the risEnabled field to be enabled or disabled.
  • TECH-571: Mozu.Catalog has been upgraded to .NET6 and regression testing has been performed.
  • Some improvements have been made to the Subscriptions feature:
    • COM-6632: An internal API is now available to copy all one-time product and one-tie shipping information into a subscription draft and remove the data from one-time collections. This is to support the new version of one-time changes that are handled via subscription drafts instead.
    • COM-6535: Continuity order jobs now account for the subscription draft in the Next Order Only Update page, and create the order from that draft mode while using the Next Order Date and Frequency values from the original subscription.
  • Some improvements have been made to the Search feature:
    • SU-3099: Search indexing has been improved by replacing the old caching strategy that didn’t work as well in a distributed environment and resulted in incorrectly indexed Solr documents. Now, a standard Redis pattern is used for the Solr schema cache in Indexer/Resolver and the schema manager invalidates the cache when a schema is published before triggering a re-index.
    • SU-2969: Code clean-up has been done to remove sort definition references from the Product Runtime service, as the functionality for sort definitions was removed from the search path.
    • SU-2808: Errors would be experienced from the schema manager endpoints during Solr configuration deployments and schema migrations, as well as reapplying a migration with the same version. These processed are now handled better so that errors are not returned in migrations and deployments.

Find more information about the client-facing bug fixes at these Jira tickets:

  • Saving Removes Properties: CAT-1867
  • Shipments Couldn't be Backordered: COM-6684 (reported by Ssense)
  • Only 25 Locations Displaying: COM-5384 (reported by Bi Mart)
  • Payment Refund Event Not Triggering: COM-6620
  • Error Saving Facets: CAT-1954 (reported by United Hardware)

1.2244 Updates

Subscriptions

  • One-Time Updates: The feature to make one-time changes to subscriptions has been changed. Now, clicking Update Next Order Only in the top right of the Subscription Details page will open a new tab with a copy of the subscription where all one-time updates can be made. This also now supports changing the shipping address and payment type/method for the next continuity order in addition to the shipping method and adding items. Note that the previous APIs for Add/Remove/Update One-Time Shipping Method and Item have been deprecated and replaced with a query parameter as detailed in the user guide linked above. The API documentation will be updated soon as well.
  • Continuity Order History: A list of all continuity orders that have been generated from a subscription is now available in a new tab on the Subscription Details page. This will display each order’s number, date, and status.

Search

  • Personalization Toggle: A "Personalization" toggle has been added to the Merchandizing Rules page, which is turned off by default. When enabled, the system will retrieve your Personalization Experience ID and display search results in the preview based on personalization configurations. If there no ID available in your search configurations, then the toggle will be greyed out and unable to be turned on.

Bug Fixes

ServiceResolution
FulfillerIncorrect total quantities were being displayed on parent shipments in the Fulfiller UI after reducing the quantity in a child transfer shipment. This was due to the parent shipment not being updated when transfer quantities changed, which has now been fixed so that parent shipments will display the accurate total.

Restricted Content

Internal Details

Find more information about the client-facing updates at these Jira tickets:

The following enhancements are internal-only and not exposed to clients.

  • COM-6663: Solr search mapping has been updated to fix some issues.
  • FFMT-3488: The Catalog UI solution has been upgraded to the latest LTS version for Angular, Node, .NET, and more.
  • SU-2447: Old Solr documents for Campaigns have been deleted.
  • FFMT-3446: The saveCreatedUser function has been optimized with simpler logic using RXJS operators.
  • CHAR-3944: Investigation and testing has been done to scope the inventory container OS upgrade, as well as a few tweaks to ensure it is compatible with PHP 7.4 and remove unnecessary punctuation.

Find more information about the client-facing bug fix at this Jira ticket:

  • Incorrect Total Quantities on Parent Shipments: FFMT-3483

1.2242 Updates

Subscriptions

  • Pause Subscription Limit: A new subscription setting, “Pause Subscription for _ Number of Continuity Orders,” has been added. When a value is set, a paused subscription will be automatically reactivated after this amount of continuity orders have been skipped (though they can still be manually reactivated before this limit is reached). If automatically reactivated, the subscription cannot be paused again until after the next continuity order is placed.
  • Next Order Date Limit: A new subscription setting, “Update Next Order Date Up to _ Days From Existing Next Order Date,” has been added. When a value is set, subscriptions cannot have their next order date manually changed to a date further out than that limit.
  • Skip Subscription Limit: A new subscription setting, "Skip Subscription _ Number of Times," the ability to skip a continuity order will be disabled once that amount of skips has been made in a row. When this happens, a continuity order must be placed before the subscription can be skipped again.

Inventory

  • RIS Location Filter: The Real-Time Inventory Service now returns product availability for STH enabled locations, where previously it only returned pickup locations. This means that the location filter available on storefront Product Listing Pages can now display availability for STH locations as well, allowing for scenarios such as displaying products in stock for direct ship. Whether this filter returns pickup or STH availability is configured in the “Location Fulfillment Types” site setting and can be set to either one or both values. This setting defaults to pickup locations.
  • Reserve Inventory Event: When reserved inventory is successfully allocated, a new “inventory.cartItemAllocated” event is now triggered. This event will include Cart ID, Cart Item ID, UPC, Quantity, and Reservation ID fields in the extendedProperties object to identify the inventory as well as the timestamp of when it was allocated.
  • Pending Item Event: When a pending item is successfully created, an “inventory.cartPendingItemCreated” event is now triggered. This event will include the Cart ID, Cart Item ID, UPC, Quantity, and AutoAssign fields to identify the item as well as the timestamp of when it was created.

Fulfiller

  • Force Fulfill Future Shipments: Fulfiller users can now force fulfill shipments with future inventory, allowing them to complete the shipment if the future inventory arrives sooner than the anticipated future date. This feature was already available via API and the Order Admin UI, but is now available in the Fulfiller UI. If a shipment status is Future, then a “Mark as Shipped” button is now displayed at the top of the shipment details and will change the shipment to Fulfilled when clicked. This is supported for both BOPIS and STH and related shipment types.

Bug Fixes

ServiceResolution
FulfillerA JavaScript error occurred when attempting to print shipping labels from the Fulfiller UI, preventing shipments from being fulfilled. This was due to the return label shipping method configuration being missing from carrier settings. This process has been improved with updated error handling to better address these scenarios.
LocationsUsers were forcibly logged out from the Location Groups configuration page if the Package Setting Unit Type configuration was not set. This page has now been updated with proper error handling for this undefined value, allowing the user to continue using the UI without being logged out.
OrdersThe tax displayed on the Shipments tab of order details was not always correct, causing the order total to increase by one cent and be stuck because the full amount was not paid. This tax calculation has been fixed so that the order total is correct.
SearchWhen adding a product to the blocked products list in merchandizing rules, the Save button remained disabled and thus the products couldn’t be blocked. This has been fixed so that the product blocking list can be successfully managed and saved.
SearchThe category merchandizing rule page was not displaying any results in the preview. This has been fixed so that products are successfully returned and displayed in the search preview.
SubscriptionsThe Subscription UI displayed all orders as USD regardless of the site currency, even if it was displayed in the correct currency on the Orders UI. This has been corrected so that subscriptions properly reflect the intended currency code.

Restricted Content

Internal Details

Find more information about the client-facing updates at these Jira tickets:

The following enhancements are internal-only and not exposed to clients. For the full list of search merchandizing edits, see the Jira list. Note that FFMT-3380 (Assembly Partial Pickup) will be announced when its counterpart is complete in the future.

  • COM-6509: A new endpoint has been added to the Reservation APIs that returns the allocation status of reservation items (which can be Pending, Success, or Failed).
  • CHAR-4381: The Updated Cart Allocation and Pending Item event queues have been updated to use “fanout” instead of “topic” exchange logic.
  • CHAR-4348: The “minimum_query_time_in_hours” value is now a Kibo.Config rather than hardcoded to 120 hours, allowing this limit to be set per environment.
  • CAT-1857: Several database sprocs for getting product categories utilized two queries when they could be combined into one. This optimization has been done to improve code efficiency.
  • CAT-1220: Subscription product attributes have now been hidden from collections on the product CRUD page.

Find more information about the client-facing bug fixes at these Jira tickets:

  • Shipping Label Error: FFMT-3509 (reported by Tourneau)
  • Logged Out of Locations Groups: COM-6544
  • Incorrect Shipment Tax: COM-6585 (reported by Calendars)
  • Blocked Products Not Saving: SU-2996 (reported by Consumer Reports)
  • Merchandizing Rules Not Displaying Results: SU-3009
  • Subscriptions Only Display USD: COM-6543 (reported by Athletic Greens)

The following bug fixes are internal-only and not exposed to clients:

ServiceJIRA TicketResolution
ApplicationsCOM-6510The Avalara app always updated order attributes after posting tax, creating extra change messages for every attribute present on the order. A new API process has been created to update single order attributes and avoid creating extraneous change messages.
InventoryCHAR-4262Pending items events were failing due to deserialization issues due to empty tag arrays. Better logic has been implemented to handle these cases and successfully emit pending item events without errors if the event is otherwise valid.
SearchSU-2949In a scenario where there are no search configurations added for a site (or if there were configuration available but no default was set) then performance was negatively affected due to the lack of a cache for search configurations. Caching has been added to improve this rare case in the future.
SearchCAT-1942In a scenario where there are no search configurations added for a site (or if there were configuration available but no default was set) then performance was negatively affected due to the lack of a cache for search configurations. Caching has been added to improve this rare case in the future.

Production Sandbox Features

The following production sandbox features and bug fixes are scheduled to be released to production on January 24, 2023.

Subscriptions

  • Order Reminder Email: This subscription email is sent prior to a continuity order being automatically generated from a subscription. The number of days in advance that this reminder is sent is determined by a new subscription setting, “Send Subscription Reminder _ Days Before Next Order.”
  • Paused Reminder Email: This subscription email is sent periodically to remind the customer that they have a paused subscription they can reactivate. The interval of how frequently this reminder is sent is determined by a new subscription setting, “Send Email Reminder Every _ Days for Paused Subscriptions.”
  • Pause Limit Reached Email: This subscription email is sent when a subscription’s pause limit has been reached and the subscription will be automatically reactivated. The number of days in advance that this reminder is sent is determined with a new subscription setting, “Send Email _ Days Before Paused Subscription is Re-Activated.”

Order Routing

  • Extensible Order Routing: Extensible Order Routing allows an Admin user to select which custom product, location, customer and order attributes can be used in Order Routing. Along with new generic attributes, you can then apply these custom attributes in filters to enhance your routing logic. This provides the power and flexibility to set up order routing rules best suited to your unique business needs and determine the most optimum locations to fulfill the orders from. This feature is available for all clients whose implementations include Order Management. Please contact Kibo Support to ensure it is enabled for you.

Fulfillment

  • OMS Substitutions: Order Management implementations can now substitute similar products during the fulfillment process if the original product is unavailable. These substitutes are pre-configured at the product level, and then manually selected by the fulfiller user during the Validate Stock step of a STH or BOPIS shipment.

User Management

  • Geography-Based User Access: You can now use custom user roles to specify which country data a user has access to and prevent them from viewing customers, orders, or returns outside of their jurisdiction. The user will not be able to edit these records nor enter shipping addresses for countries they don't have access to when creating new orders. By default, users will have access to data for all countries unless any of these custom roles are applied.

Search

  • Product Usage in Suggest API: The Suggest API now supports the productUsage field, allowing you to view which products are collections in suggested searches such as the type ahead search. Add the productUsage field to the search schema, and then add it to the return fields of the Product Suggestion settings. This value will then be returned for each product in search responses to indicate whether it is the Standard, Configurable, Bundle, or Collection usage type.

Other

  • Three Decimal Places: Currency values with three decimal places are now supported in APIs and UIs where currencies are displayed. This applies to relevant currencies such as KWD (Kuwaiti Dinar), OMR (Rial Omani), and BHD (Bahraini Dinar). Specifically, this support includes the Commerce, Subscription, Reservation, Customer, Payment, and Shipping API services. It also includes the Cart, Checkout, and My Account pages on the Storefront as well as the Orders, Customer, B2B, Returns, and Shipping Setting UIs in the Admin. Currencies that typically use two decimals, such as USD, will continue to only display two decimal places.
  • Minor UI Changes: Visual updates have been made to several UIs to improve standardization.
    • The Campaigns and Quick Edits pages have been updated to improve button styling and fix improper button heights.
    • The tool tip and Learn More button on the Create Dynamic Category page have been corrected for proper positioning, and the headers of the Customer page’s order table and the Order page’s order details panel have been corrected and given a top border.
    • Improperly bolded text has been removed from the Create Price Entry page of the Price List UI, and the text has been updated to the proper font size and color.
    • Excessive length of the dropdown for Category page search results has been corrected, and spacing between lines has been improved as well.
    • The background color of the Campaigns page has been updated to be more consistent with other UIs.
    • The tooltip color of the Editable toggle on order attributes has been updated, and the font sizing for B2B and location attribute edit pages has also been corrected.
    • If there is no result available for search criteria in the File Manager UI, the message “No Data Available” will now be displayed.
    • When adding a member product to a collection, messaging has been changed from “No data to display” to “No Data Available.” The position of the First Available Date tooltip on the Create Product page has also been fixed.
    • The Save buttons of the product, order, B2B, and location attribute edit pages have been updated to display the proper color when the button is inactive. The Documents and Entities tabs of the Custom Schema page have also been updated to display the proper color when hovered over.
    • The Save buttons of the Add User and Create New Role modals in the System > Permissions UIs and the Catalog Provisioning modal have been updated to display the proper color when hovered over. 

Sandbox Bug Fixes

ServiceResolution
FulfillmentSome fulfiller users of a particular implementation could not successfully log in as their accounts would be locked or they would be taken to the sandbox environments page with no results (despite trying to access a production environment). This has been corrected so that these users can successfully log into their expected tenants and perform a password reset to access their accounts.
OrdersWhen the “Allocate Inventory for Orders in Pending Review” setting was enabled for an OMS+Catalog implementation, Flexible Auto Capture was failing to capture orders when they moved from the Pending Review to Ready states. This resulted in the order payments remaining stuck in the Authorized state. This has been fixed so that auto captures will successfully capture authorized payments in these cases.
OrdersSome products were not displaying their available options when an Admin user attempted to add them to an offline order. This has been corrected so that product options will successfully load in the Admin UI so that they can be added to offline orders.
OrdersA 500 Credit Failed Error was experienced when attempting to issue refunds on some orders, indicating that the sum of credits would exceed the original amount even though that was not the case. This was due to the orders have order attributes with their attribute definition IDs set to 0, resulting in a failure. This has been fixed so that attribute IDs are correctly retrieved and refunds can be successfully issued.
OrdersPayment credits were issued after cancelling errored orders that had Fulfilled shipments. Orders are now properly prevented from being cancelled if they have any shipments in the Fulfilled state.
OrdersCSRs were unable to add some products to the cart when creating an offline order, due to an error when fetching product variations. This has been updated so that the error will be handled and products will be successfully accessible in Admin orders.
StorefrontThe checkout page would freeze when the wrong gift card was applied in the payment tab, requiring the customer to refresh the page or edit shipping/promo code information to re-start the page before adding other payment details. This has now been fixed so that invalid gift cards will not freeze the page and the customer can immediately re-enter their gift card information.
StorefrontProduct images were being removed from display on the storefront after the product was edited in the Admin UI, even if no changes to images had been made. This was due to issues with external image URLs being overwritten and broken by the system upon saving the product. This has been corrected so that external images are properly supported.


Restricted Content

Internal Details


Find more information about the client-facing updates at these Jira tickets:

The following enhancements are internal-only and not exposed to clients:

  • CHAR-4415: Some cache tests for the Real-Time Inventory Service were failing when no docker containers were currently running. This has been corrected so that tests can work properly both locally and in deployed dockers.
  • CHAR-4430 and CHAR-4360: Fixes have been made to Order Routing integration test cases and Jenkins deployments where they were previously failing. The SKIP_BUILD_OUTPUT option for the Real-Time Inventory Service in Jenkins was not skipping tests as intended to improve build time, and was instead running the tests every time regardless of the option. This has been corrected so that tests will not run when this option is selected.
  • CHAR-4475: Swagger generation for inventory was failing after the PHP 7.4 upgrade, due to validation issues and other errors. Request bodies have now been appropriately updated to reduce these errors so that Swagger documentation can be successfully generated.
  • CHAR-4444 and CHAR-4433: Updates have been made to the Real-Time Inventory Service to improve the location attributes updated events queue and fix production Redis issues for the develop branch.
  • CHAR-4293: The use of AWS keys/secrets has been removed from the Inventory Export and Fetch File API, as well as ensuring that S3 credentials are only passed if they are present and upgrading the S3 version our system is using.
  • TECH-995: Deleted products were not included in the Google spec during a full import. This has been updated so that the delete event is published and logged properly.

Find more information about the client-facing bug fixes at these Jira tickets:

  • Fulfillers Can't Log In: COM-6650 (reported by London Drugs)
  • Product Options Not Displaying: COM-6788 (reported by Sun & Ski)
  • Authorized Orders Not Capturing: COM-6727 (reported by Ssense)
  • Attributes Causing Refund Errors: COM-6169 (reported by French Toast)
  • Checkout Page Freezing: COM-6786 (reported by Sundance)
  • Product Images Disappearing: COM-6828 (reported by Specialty Commerce)
  • Crediting Cancelled Orders: COM-6898 (reported by Ace Hardware)
  • Unable to Add Products to Order: COM-6506 (reported by French Toast)

The following bug fixes are internal-only and not exposed to clients:

ServiceJIRA TicketResolution
CatalogTECH-974If a sale price was already set on a product, such as in the UI, then it could never be removed via the product bulk import APIs. This has been corrected so that this value can be removed successfully via API as needed.
Dev CenterTECH-992A JavaScript file caused Dev Center to hang intermittently, causing slow load times. This has been optimized so that the Dev Center will load more quickly and consistently.