Production Tenant Features
Subscriptions
- Subscription One-Time Changes: To follow-up on the recent ability to add a one-time purchase product to an existing subscription, a one-time change can also now be made to the shipping method. When the one-time shipping method option is updated, the next continuity order will use that shipping method but future continuity orders will use the original subscription method. The subscription will not be repriced.
- Subscription Remove Coupon API: A new Subscription API endpoint is now available that will remove one or more coupons from a subscription. You can call the Remove Coupon API and specify which coupon codes should be removed. This API schema is not yet available in the documentation but will be added soon.
Order Routing
- Future ATP Order Routing Update: Order Routing behavior has been enhanced to work better with Future Available to Promise inventory cases. Previously, Order Routing erroneously suggested to put some items with future inventory into Customer Care because it treated them as a partial match. Order Routing will now better consider future inventory cases and try to combine all candidates for locations and future dates together to create full matches for assignment. This does not affect existing Order Routing behavior without Future Available to Promise inventory.
- OMS-Only Order Routing Update: If a fulfillment location code is provided in the request for an STH item on an OMS-Only order, that item will be placed into a new shipment that bypasses Order Routing. Instead of being routed, that shipment will be assigned directly to that location for fulfillment. The “isAutoAssigned” flag on the shipment data will be set to “false.” This only applies to non-Reserve Inventory in Cart cases.
Search
- Search Settings Update: Instead of showing Edit and Delete buttons for every configuration in the table of the Search Settings page, a dropdown menu has now been added to each row that will display Edit and Delete when the menu is expanded. Note that the default configuration will not have the Delete option.
- Merchandizing Rules in Campaigns: The Campaigns page now displays a Merchandizing Rules tab, so that you can select rules for your campaign in addition to discounts and site variations. Active merchandizing rules will be displayed and allow you to switch between Site Search and Categories rules. You can also click Edit or Create New to open a new tab for the Merchandizing Rules UI and either edit an existing rule or create a new rule.
Production Bug Fixes
The following list summarizes resolved issues for this production release.
Service | Resolution |
---|---|
Customer | The “Accepts Marketing” flag on customer accounts was not being updated when the field was set during order creation. Now, the customer’s preference as selected when placing an order will successfully update the setting on their account and determine whether they receive future marketing messages or not. |
Inventory | When items were over allocated as part of Reserve Inventory in Cart and resulted in pending items, the event that was emitted displayed a blank topic. This topic has now been named “inventory.cartpendingitemscreated” as intended. |
Inventory | The descending sort was not working in the Inventory UI, though the ascending sort did work as expected. This has been corrected so you can successfully sort inventory records in descending order by any column in the table. |
Order Routing | Order Routing was not honoring locations marked “On Hold” and was assigning shipments to those locations anyway. This was due to the location not being properly set in the database when it was a part of multiple routing groups. This has been fixed so that locations can be successfully marked “On Hold” in one routing group and skipped during assignment, regardless of its status in other routing groups. |
Search | Search configuration rows were not clickable. This has been fixed so that you can click a row and be navigated to the Edit page of that configuration. |
Search | When previewing a merchandizing rule with pagination, clicking different pages would take you to different spots in the grid and product list. This has been fixed so that pagination always lands on the hundredth product in preview. |
Storefront | The “Ship To” address did not properly update when changed on the checkout page, as it would revert to the auto-suggested address even if the user opted to use the address as entered when prompted. This has been fixed so the address will respect the user’s selection. |
Storefront | After adding a custom field to context.response.viewData with the global.request.after.js API extension, the parentCategoryId was no longer accessible from the search results page even though it was required for category navigation. This has been fixed so that the ID is available for use by JavaScript as expected. |
Subscriptions | One-time item level discounts on subscriptions were not being applied to the next continuity order as expected. This has been corrected so that these discounts are successfully applied. |
Subscriptions | Validation errors were experienced when attempting to change the shipping method on subscriptions in UK and EU catalogs. This has been fixed so that all subscriptions can be properly updated with a new shipping address. |
Production Sandbox Features
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.
Sandbox Bug Fixes
The following list summarizes resolved issues for this sandbox release.
Service | Resolution |
---|---|
Fulfiller | A 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. |
Locations | Users 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. |
Orders | The 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. |
Search | When 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. |
Search | The 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. |
Subscriptions | The 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. |
Internal Release Notes
Client-Facing Production Tenant Features
Subscriptions
- Subscription One-Time Changes (COM-6250 and COM-6471): To follow-up on the recent ability to add a one-time purchase product to an existing subscription, a one-time change can also now be made to the shipping method. When the one-time shipping method option is updated, the next continuity order will use that shipping method but future continuity orders will use the original subscription method. The subscription will not be repriced.
- Remove Subscription Coupon API (COM-6437): A new Subscription API endpoint is now available that will remove one or more coupons from a subscription. You can call the Remove Coupon API and specify which coupon codes should be removed. This API schema is not yet available in the documentation but will be added soon.
Order Routing
- Future ATP Order Routing Update (CHAR-4058): Order Routing behavior has been enhanced to work better with Future Available to Promise inventory cases. Previously, Order Routing erroneously suggested to put some items with future inventory into Customer Care because it treated them as a partial match. Order Routing will now better consider future inventory cases and try to combine all candidates for locations and future dates together to create full matches for assignment. This does not affect existing Order Routing behavior without Future Available to Promise inventory.
- OMS-Only Order Routing Update (COM-6112): If a fulfillment location code is provided in the request for an STH item on an OMS-Only order, that item will be placed into a new shipment that bypasses Order Routing. Instead of being routed, that shipment will be assigned directly to that location for fulfillment. The “isAutoAssigned” flag on the shipment data will be set to “false.” This only applies to non-reserved inventory cases.
Search
- Merchandizing Rules in Campaigns (CAM-316): The Campaigns page now displays a Merchandizing Rules tab, so that you can select rules for your campaign in addition to discounts and site variations. Active merchandizing rules will be displayed and allow you to switch between Site Search and Categories rules. You can also click Edit or Create New to open a new tab for the Merchandizing Rules UI and either edit an existing rule or create a new rule.
- Search Settings Update (SU-2345 and SU-2880): Instead of showing Edit and Delete buttons for every configuration in the table of the Search Settings page, a dropdown menu has now been added to each row that will display Edit and Delete when the menu is expanded. Note that the default configuration will not have the Delete option. Also, improvements have been made to CSS and formatting on the Search Configurations page.
Internal Production Tenant Updates
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 Version 1.2242.
- CHAR-4290: To assist with implementation of Reserve Inventory in Cart, an internal success event is now emitted whenever inventory is successfully allocated. This event is similar to the Pending Item event and contains the Cart ID, Cart Item ID, Reservation ID, and UPC.
- CHAR-4281: Even if events are turned off, logs will now always be added to the inventory_logs table no matter what.
- CAT-1723: Subscription provisioning has been enhanced. When the feature has previously been enabled on a tenant and then is re-enabled, it will now populate data for all catalogs and locales.
- COM-6379: If an item is removed from an inventory reservation due to a zip code update in the cart or checkout, that is now captured in the change messages data.
- CAT-1902: Product code validation has been removed when submitting a payload to inventory service, meaning that errors will no longer be triggered at this point by a lack of product codes.
- CHAR-4274 and CHAR-4371: A new locationAttributeUpdated internal event will be emitted to communicate which fulfillment types were updated after a location modification, allowing the cache to be invalidated appropriately.
- ICKY-686 and SU-2980: Application behavior integration has been improved. In the behavior selection modal, all behaviors are grouped by behavior category and displayed with a checkbox that allows you to select or deselect individual or all behaviors for the application. You can also select templates with pre-selected options. Additionally, Mozu.AppDev has been recompiled to get new Search Merchandizing Rule behaviors. These behaviors will now appear in the behavior option list for applications.
- SB-92 and SB-94: A new internal UI has been created for users with ESR access to manage API (throttling) limits on developer accounts and production tenants. In this UI, you can select an account or tenant and edit its throttle limits. Internal users can access this UI via the user dropdown menu in the top right of the Launchpad.
- CHAR-4217 and CHAR-4093: A couple improvements have been made to the real-time inventory service. First, a daily MySQL script has been implemented to warm the buffer pool. Second, verification tests have been added to ensure that the location cache is always updated properly upon the Inventory Deleted event.
Production Bug Fixes
The following list summarizes resolved issues for this production release.
Service | JIRA Ticket | Resolution |
---|---|---|
Catalog | CAT-1823 | A null reference exception was encountered in the Catalog with no known cause. To protect against this in the future, a null check has been added so that the invalid data condition can be exposed in the future. |
Customer | COM-6268 (reported by Athletic Greens) | The “Accepts Marketing” flag on customer accounts was not being updated when the field was set during order creation. Now, the customer’s preference as selected when placing an order will successfully update the setting on their account and determine whether they receive future marketing messages or not. |
Inventory | CHAR-4219 | When items were over allocated as part of Reserve Inventory in Cart and resulted in pending items, the event that was emitted displayed a blank topic. This topic has now been named “inventory.cartpendingitemscreated” as intended. |
Inventory | CHAR-3827 (reported by AM Retail) | The descending sort was not working in the Inventory UI, though the ascending sort did work as expected. This has been corrected so you can successfully sort inventory records in descending order by any column in the table. |
Order Routing | CHAR-4235 (reported by Independent Pet Partners) | Order Routing was not honoring locations marked “On Hold” and was assigning shipments to those locations anyway. This was due to the location not being properly set in the database when it was a part of multiple routing groups. This has been fixed so that locations can be successfully marked “On Hold” in one routing group and skipped during assignment, regardless of its status in other routing groups. |
Search | SU-2993 | Search configuration rows were not clickable. This has been fixed so that you can click a row and be navigated to the Edit page of that configuration. |
Search | SU-2884 | When previewing a merchandizing rule with pagination, clicking different pages would take you to different spots in the grid and product list. This has been fixed so that pagination always lands on the hundredth product in preview. |
Storefront | COM-6267 (reported by OMI Industries) | The “Ship To” address did not properly update when changed on the checkout page, as it would revert to the auto-suggested address even if the user opted to use the address as entered when prompted. This has been fixed so the address will respect the user’s selection. |
Storefront | TECH-898 (reported by Ace Hardware) | After adding a custom field to context.response.viewData with the global.request.after.js API extension, the parentCategoryId was no longer accessible from the search results page even though it was required for category navigation. This has been fixed so that the ID is available for use by JavaScript as expected. |
Subscriptions | CAT-1895 | One-time item level discounts on subscriptions were not being applied to the next continuity order as expected. This has been corrected so that these discounts are successfully applied. |
Subscriptions | COM-6582 | Subscription status fields were not mapped properly for Solr. This has been corrected and an additional improvement has been made to get the exact total count of results, but only affects solr search and does not change any client-facing behavior. |
Subscriptions | COM-6641 (reported by Athletic Greens) | Validation errors were experienced when attempting to change the shipping method on subscriptions in UK and EU catalogs. This has been fixed so that all subscriptions can be properly updated with a new shipping address. |
Tenant | TECH-944 | An overflow error was happening during import due to the TenantCustomInIdentity field increasing to a large amount. This was due to vocab-driven attribute values without a matching lookup, as well as Admin-entered attributes without values. This has been fixed by filtering out all attributes with a null ID and value after mapping is done and before entity IDs are assigned. |
Client-Facing Sandbox Features
Inventory
- RIS Location Filter Update (CAT-1550, CAT-1631, and CHAR-4118): 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 (COM-6554): 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 (COM-6314): 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.
Subscriptions
- Pause Subscription Limit (COM-6323): 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 (COM-6327): 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 (COM-6467 and COM-6469): A new subscription setting, "Skip Subscription _ Number of Times," has been added. When a value is set, 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.
Fulfiller
- Force Fulfill Future Shipments (FFMT-3294): 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.
Internal Sandbox Updates
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.
Sandbox Bug Fixes
The following list summarizes resolved issues for this sandbox release.
Service | JIRA Ticket | Resolution |
---|---|---|
Applications | COM-6510 | The 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. |
Fulfiller | FFMT-3509 (reported by Tourneau) | A 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. |
Inventory | CHAR-4262 | Pending 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. |
Locations | COM-6544 | Users 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. |
Orders | COM-6585 (reported by Calendars) | The 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. |
Search | SU-3009 | The 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. |
Search | SU-2996 (reported by Consumer Reports) | When 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. |
Search | SU-2949 | In 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. |
Search | CAT-1942 | In 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. |
Subscriptions | COM-6543 (reported by Athletic Greens) | The 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. |