May 3, 2022 — 1.2216 Service Update

Production Tenant Features

eCommerce & Order Management Functionality

  • Inventory Export Filename: When exporting inventory files, a custom filename is no longer required when the files are zipped. This means that the automatically generated filename that includes the export date-time will be used by default and a custom name will not have to be set.
  • Variant Properties Optimization: Improvements have been made to the caching of variant properties to improve performance when retrieving this product data through the Admin UI and the API.
  • Discount Folders Update: When viewing discount folders, clicking the Create New Discount option will open the discount creation page in a separate tab. This new discount will still be created in the current folder the user is in, as well as respect the selected catalog.
  • Case-Sensitive Attribute Option: A new configuration has been added to product attribute settings that will indicates whether the attribute value is case-sensitive for filtering and faceting (which defaults to not case-sensitive). This is a new checkbox called "Index Value With Case" which when enabled will make the attribute case-sensitive and prevent inconsistency in the capitalization of facets.
  • Import Completed Shipments: A new field, isHistoricalImport, has been added to the Shipment API to allow completed shipments to be imported into KCCP. When a shipment is created with this flag enabled, it should be placed directly into the Fulfilled state and shipment events will not be triggered for it. However, fulfiller users will still be able to process returns and refunds on the shipment from the Fulfiller UI. This addition supports an upcoming enhancement in which importing historical orders will create fulfilled shipments for those orders.

Fulfiller Functionality

  • Custom STH Consolidation BPM: Support for a custom BPM based on the upcoming STH Consolidation fulfillment process has been created for a particular implementation. This custom flow adds Waiting for Payment Confirmation and Out for Delivery steps.

Search Functionality 

  • Merchandiser Role Update: Users with the Search Merchandiser role can now edit search synonyms, where previously they did not have the appropriate permissions to do so. 

Production Sandbox Features

eCommerce & Order Management Functionality

  • Imported Completed Orders: You can now fully import historical orders in Completed or Canceled status via the Create Order API and shipment records will be created for these orders. The isHistoricalImport flag should be set when performing the import, which will carry over to its shipments. These orders and shipments will be displayed in the Order Admin and Fulfiller UIs where you can perform returns, refunds, and credits on them. However, the creation of shipments and support for those actions requires a site setting ("Refund/Credit on imported orders") to be toggled on prior to import. 
  • Configurable Bundles for Subscriptions: You can now include bundled items in subscriptions. These "configurable bundles" are different from the existing Bundle product usage, as they require a standard product to be configured with product extras to represent the bundled items. That product must then have additional subscription attributes configured, which allow the bundle to be flattened into individual items at either the subscription or shipment level and have the total pricing distributed amongst the extras.
  • Other Subscription Updates: Additional follow-up enhancements have been made to the subscriptions feature.
    • When using the minimum order amount or continuity order constraints for subscription discounts, only subscription items will be factored into those constraints. Likewise, subscription-only discounts will only apply to the subscription items (not one-time purchase items) when calculating the order total.
    • The item subscription price will now be displayed when adding an item to an order or existing subscription in the Admin UI. This improves clarity and more accurate information, as the subscription price may be different from the one-time purchase price depending on the item's price list configurations.
    • The external subscription ID is now displayed in the subscription details if that value exists for that subscription, such as if it was imported as an existing subscription from another eCommerce system.
    • A reprice now occurs whenever a continuity order is made from a subscription.
    • Items that are canceled from a subscription are now tracked in a canceled items array of the subscription data.
    • Additional validations are now enforced on the Subscriptions API, ensuring that an item cannot be added to a subscription if it doesn't support the subscription's frequency.

Fulfiller Functionality

  • STH Consolidation: A new variant of Ship to Home can now be enabled on locations, in which transfer shipments send STH items to a centralized location to be fulfilled together instead of splitting the shipment. This adds a Waiting For Transfer step to the STH fulfillment flow and saves on the customer's shipping costs. For more details and information about how order routing logic handles consolidation of these items, see the STH Consolidation documentation.
  • Packing Slip Backwards Compatibility: Some upgraded OMS implementations had existing behavior to print multiple shipping labels on a single packing slip. However, the Split Packing Slips feature removed the ability to do this. There was no backwards compatibility to support generating multiple shipping labels and tracking numbers per slip while the feature was enabled. Support has now been added so that upgraded OMS clients can continue their existing behavior of generating multiple labels and tracking numbers on a single slip, as long as there is only one packing slip for that particular shipment.
  • Display Order Reference Number: The ability to query shipments by order reference number (the parentCheckoutNumber in Commerce APIs) was recently added with 1.2212. Now, this order reference number can also be displayed in the shipment details of the Fulfiller UI while viewing  search results. By default, this field is not displayed and can be toggled on in the fulfiller theme settings (the displayOrderRefNumber option). Note that searching by this field will look for an exact match.

Bug Fixes

The following list summarizes resolved issues for this release.

StatusResolution
Targeted for Production TenantsReturn URLs are now blocked on implementations that allow redirects within their URLs, improving security and preventing phishing pages from creating fake pages off of the storefront.
Targeted for Production TenantsThe search functionality in the Custom Schema page was not working in either the previous version of eCommerce or KCCP, as no search results would be displayed after attempting to search the entities. This has been corrected in both versions of the platform.
Targeted for Production TenantsShipment numbers were still not displaying on courier labels alongside the external order numbers after previous fixes were released. This has been fixed so that shipment numbers are properly reported on these labels for carriers such as Canada Post.
Targeted for Production TenantsInventory refresh and adjust calls were unable to be made to inactive locations via API, even though inventory needs to be adjusted before locations are reactivated. This has been fixed so that these calls can be successfully made to inactive locations. Deallocation and inventory fulfillment calls can also be made, but allocation calls cannot be.
Targeted for Production TenantsA particular implementation experienced products with negative availability, preventing those products from being sold even though they had on hand inventory. This was due to reserved inventory not being cleared, but has now been corrected so that inventory levels will properly update after reserves are released.
Targeted for Production TenantsCustomers did not receive the pickup message when a BOPIS shipment was ready for pickup. This was due to the template in the theme being out-of-date, which has now been updated for email and SMS.
Targeted for Production SandboxesWhen a shipment item was canceled, the shopperEnteredValue field in the options object of its API data was lost. This has been corrected so that this value stays with the shipment item when it moves from the regular item array to the canceled items array.
Targeted for Production SandboxesWhen attempting to create orders using the DKK currency code, a 409 Error would be encountered instead. This was due to a validation issue with rounding strategies, which has now been fixed so that DKK orders can be placed.
Targeted for Production SandboxesA gift card gateway connection issue caused a child order in a multiship scenario to be placed in the Pending and then Abandoned state, although it had a collected PayPal payment. Order creation logic has been updated so that multiship child orders will go into the Errored state if the order submission fails due to a reason such as gateway timeout.
Targeted for Production SandboxesMultiship orders were being put into the Pending state when there was no inventory for an item. However, the expected behavior was for the order to be accepted and then moved into Customer Care or Canceled status by Order Routing. This was due to the logic of the product validation process, which is now skipped by multiship cases so that orders are placed in the proper status.
Targeted for Production SandboxesThe KCCP version of the Get Returns API did not include any product options in the items array, though that information was provided in the Get Returns API on the previous version of eCommerce. The KCCP version of this API has been updated so that product options are passed to the return record.
Targeted for Production SandboxesThe "Send Test Email" option in the Site Editor did not actually send a test email as expected. This option has been removed for now, until support for that function is in place.
Targeted for Production SandboxesOrders with declined payments were unable to be canceled as they couldn't be refunded or voided, leaving them stuck in processing. This behavior has been updated so that unpaid and fully voided orders with canceled shipments can be successfully canceled.
Targeted for Production SandboxesThe Avalara application was showing a "CompletedFailure" status code in its event log after fulfilling a shipment, though the event was successfully processed. This has been fixed so that the event status code will properly display "Success" when appropriate.
Targeted for Production SandboxesCredits and refunds on gift cards were being duplicated when there were multiple payments on an order. This has been corrected so that these payment actions only occur once per order for the proper gift card record. 


Restricted Content

Internal Release Notes

Production Tenant Features

Client-Facing Updates

  • Inventory Export Filename (CHAR-3667): When exporting inventory files, a custom filename is no longer required when the files are zipped. This means that the automatically generated filename that includes the export date-time will be used by default and a custom name will not have to be set.
  • Variant Properties Optimization (CAT-1296): Improvements have been made to the caching of variant properties to improve performance when retrieving this product data through the Admin UI and the API.
  • Discount Folders Update (CAM-268): When viewing discount folders, clicking the Create New Discount option will open the discount creation page in a separate tab. This new discount will still be created in the current folder the user is in, as well as respect the selected catalog.
  • Case-Sensitive Attribute Option (CAT-1199): A new configuration has been added to product attribute settings that will indicates whether the attribute value is case-sensitive for filtering and faceting (which defaults to not case-sensitive). This is a new checkbox called "Index Value With Case" which when enabled will make the attribute case-sensitive and prevent inconsistency in the capitalization of facets.
  • Import Completed Shipments (FFMT-3319): A new field, isHistoricalImport, has been added to the Shipment API to allow completed shipments to be imported into KCCP. When a shipment is created with this flag enabled, it should be placed directly into the Fulfilled state and shipment events will not be triggered for it. However, fulfiller users will still be able to process returns and refunds on the shipment from the Fulfiller UI. This addition supports an upcoming enhancement in which importing historical orders will create fulfilled shipments for those orders.
  • Custom STH Consolidation BPM (FFMT-3160, requested by Al-Futtaim): Support for a custom BPM based on the upcoming STH Consolidation fulfillment process has been created for a particular implementation. This custom flow adds Waiting for Payment Confirmation and Out for Delivery steps.
  • Merchandiser Role Update (SU-2206 and SU-2306): Users with the Search Merchandiser role can now edit search synonyms, where previously they did not have the appropriate permissions to do so. 

Internal Updates

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

  • TECH-718: Catalog import jobs have been added for Update/Create/Delete Category and Product events to support search indexing on import changes.
  • TECH-712: A cache warmup routine has been added for Site Builder.
  • TECH-711: The Image Processing element of the Content service has been split into its own separate deployment to improve performance.
  • TECH-658: Emails from the Dev Center (including invitations to tenants and sandboxes, password reset, etc.) now come from the external configuration used in the implementation's sender email address override instead of Mozu support.
  • FFMT-3020: As a follow-up to the autoAssign flag update in 1.2212 to reduce  pending items handler performance issues, the flag is now passed to Inventory on allocation calls.
  • FFMT-2071: Retry logic has been added to the JbpmBusinessProcessManagementService and external services such as Order Routing to attempt resending failed calls. This defaults to 3 retries.
  • COM-5524: Unnecessary SQL has been removed from the Catalog service, validation stories have been rebased, and the Configure API is no longer used on the sandbox (Get Product is used instead).
  • CHAR-3765: The Tenant ID and Site ID have been added to logging when available.
  • CHAR-3685: A new docker image and authentication plugin has been added to support the Mac m1 processor.
  • CHAR-3597: The HTTP client code has been updated in upstream services to make them compatible with regenerated SDKs (excluding inventory). Java projects that use a Java SDK have also been updated to the latest version.
  • COM-5523: Cleanup has been done to Site Builder to remove duplicate and unnecessary code.
  • I18N-796, I18N-684, and I18N-861: The Mozu.MZDB, Categories in the ProductAdmin, and ProductTypes/ProductAttributes API services have been updated for localization.

Production Sandbox Features

Client-Facing Updates

  • Imported Completed Orders (COM-5546): You can now fully import historical orders in Completed or Canceled status via the Create Order API and shipment records will be created for these orders. The isHistoricalImport flag should be set when performing the import, which will carry over to its shipments. These orders and shipments will be displayed in the Order Admin and Fulfiller UIs where you can perform returns, refunds, and credits on them. However, the creation of shipments and support for those actions requires a site setting ("Refund/Credit on imported orders") to be toggled on prior to import. 
  • Configurable Bundles for Subscriptions (COM-5364): You can now include bundled items in subscriptions. These "configurable bundles" are different from the existing Bundle product usage, as they require a standard product to be configured with product extras to represent the bundled items. That product must then have additional subscription attributes configured, which allow the bundle to be flattened into individual items at either the subscription or shipment level and have the total pricing distributed amongst the extras.
  • Other Subscription Updates: Additional follow-up enhancements have been made to the subscriptions feature.
    • (PROM-26, VAMP-1632, COM-5562 and COM-5522) When using the minimum order amount or continuity order constraints for subscription discounts, only subscription items will be factored into those constraints. Likewise, subscription-only discounts will only apply to the subscription items (not one-time purchase items) when calculating the order total.
    • (COM-5633) The item subscription price will now be displayed when adding an item to an order or existing subscription in the Admin UI. This improves clarity and more accurate information, as the subscription price may be different from the one-time purchase price depending on the item's price list configurations.
    • (COM-5392) The external subscription ID is now displayed in the subscription details if that value exists for that subscription, such as if it was imported as an existing subscription from another eCommerce system.
    • (COM-5521) A reprice now occurs whenever a continuity order is made from a subscription.
    • (COM-5515) Items that are canceled from a subscription are now tracked in a canceled items array of the subscription data.
    • (COM-5275) Additional validations are now enforced on the Subscriptions API, ensuring that an item cannot be added to a subscription if it doesn't support the subscription's frequency.
  • STH Consolidation (FFMT-2474, moved from 1.2214 to 1.2216): A new variant of Ship to Home can now be enabled on locations, in which transfer shipments send STH items to a centralized location to be fulfilled together instead of splitting the shipment. This adds a Waiting For Transfer step to the STH fulfillment flow and saves on the customer's shipping costs. For more details and information about how order routing logic handles consolidation of these items, see the STH Consolidation documentation.
  • Packing Slip Backwards Compatibility (FFMT-3153, requested by Rue 21 and Laura Canada)Some upgraded OMS implementations had existing behavior to print multiple shipping labels on a single packing slip. However, the Split Packing Slips feature removed the ability to do this. There was no backwards compatibility to support generating multiple shipping labels and tracking numbers per slip while the feature was enabled. Support has now been added so that upgraded OMS clients can continue their existing behavior of generating multiple labels and tracking numbers on a single slip, as long as there is only one packing slip for that particular shipment.
  • Display Order Reference Number (FFMT-3081, COM-5387): The ability to query shipments by order reference number (the parentCheckoutNumber in Commerce APIs) was recently added with 1.2212. Now, this order reference number can also be displayed in the shipment details of the Fulfiller UI while viewing  search results. By default, this field is not displayed and can be toggled on in the fulfiller theme settings (the displayOrderRefNumber option). Note that searching by this field will look for an exact match.

Internal Updates

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

  • FFMT-3143: As a follow-up to the Java SDK updates in 1.2214, the fulfillment service has been updated to use the newly generated SDKs as well.
  • FFMT-3141: Healthchecks were not failing when a fulfillment pod was out of heap space. The heap allocation settings have now been updated based on container limits of the docker containers/pods, and the healthcheck will fail if there are memory errors with a pod.
  • COM-5635: QA regression tests have been done on the location service after the .NET 6 upgrade.
  • CHAR-3777: The Inventory Tenant configuration API is now internal-only and will not accept external requests, to avoid exposing sensitive settings.
  • CHAR-3774: Future inventory jobs are now rolled up into one job record based on timestamps. Previously, creating two adjust records at the same time resulted in two jobs. Now, those will be combined into one job for better efficiency and reduction of duplicate records.
  • CHAR-3769: The timeout threshold of the Get Inventory API has been increased from 50ms to 250ms, which is more appropriate for larger environments such as Ace Hardware.
  • CHAR-3709: The RIS service now has a flag (includeNegativeInventory) to include negative inventory or not in the aggregate call, similar to the one used by the PHP inventory service and as documented in the client-facing Inventory API specs.
  • CHAR-3665: Inventory exports now log correlation IDs for easier job tracking.
  • CHAR-3604: A batching mechanism has been implemented for the export file by location process, improving memory management and performance when doing location-based exports.
  • SU-2357: To support the recent Search Merchandiser role update to allow those users to edit search synonyms, the AdminUser database has been updated to sync those behaviors across roles and ensure that the search synonym behavior is supported for both merchandisers and admins.
  • I18N-880, I18N-813, I18N-3143, I18N-811, and I18N-890: Localization functionality has been added to the Kibo.MobileNotifications and Mozu.InstalledApplication services. QA was done on the localization of Mozu.AppDev.
  • FFMT-3225: After changing the Get Dashboard APIs to query Solr instead of Mongo, Solr experienced consistent lag with the data preventing them from returning accurate bucket counts. These APIs have been moved back to Mongo and optimizations have been made to improve the query.

Bug Fixes

The following list summarizes resolved issues for this release.

StatusJIRA TicketResolution
Targeted for Production TenantsTECH-671 (reported by M&Ms)Return URLs are now blocked on implementations that allow redirects within their URLs, improving security and preventing phishing pages from creating fake pages off of the storefront.
Targeted for Production TenantsSE-967The search functionality in the Custom Schema page was not working in either the previous version of eCommerce or KCCP, as no search results would be displayed after attempting to search the entities. This has been corrected in both versions of the platform.
Targeted for Production TenantsFFMT-2857 (reported by London Drugs and Giant Tiger)Shipment numbers were still not displaying on courier labels alongside the external order numbers after previous fixes were released. This has been fixed so that shipment numbers are properly reported on these labels for carriers such as Canada Post.
Targeted for Production TenantsCHAR-3760Inventory refresh and adjust calls were unable to be made to inactive locations via API, even though inventory needs to be adjusted before locations are reactivated. This has been fixed so that these calls can be successfully made to inactive locations. Deallocation and inventory fulfillment calls can also be made, but allocation calls cannot be.
Targeted for Production TenantsCHAR-3699 (reported by French Toast)A particular implementation experienced products with negative availability, preventing those products from being sold even though they had on hand inventory. This was due to reserved inventory not being cleared, but has now been corrected so that inventory levels will properly update after reserves are released.
Targeted for Production TenantsCHAR-3427Customers did not receive the pickup message when a BOPIS shipment was ready for pickup. This was due to the template in the theme being out-of-date, which has now been updated for email and SMS.
Targeted for Production SandboxesFFMT-3159 (reported by Ace Hardware)When a shipment item was canceled, the shopperEnteredValue field in the options object of its API data was lost. This has been corrected so that this value stays with the shipment item when it moves from the regular item array to the canceled items array.
Targeted for Production SandboxesCOM-5670 (reported by The Level Group)When attempting to create orders using the DKK currency code, a 409 Error would be encountered instead. This was due to a validation issue with rounding strategies, which has now been fixed so that DKK orders can be placed.
Targeted for Production SandboxesCOM-5624 (reported by Ace Hardware)A gift card gateway connection issue caused a child order in a multiship scenario to be placed in the Pending and then Abandoned state, although it had a collected PayPal payment. Order creation logic has been updated so that multiship child orders will go into the Errored state if the order submission fails due to a reason such as gateway timeout.
Targeted for Production SandboxesCOM-5591 (reported by Ace Hardware)Multiship orders were being put into the Pending state when there was no inventory for an item. However, the expected behavior was for the order to be accepted and then moved into Customer Care or Canceled status by Order Routing. This was due to the logic of the product validation process, which is now skipped by multiship cases so that orders are placed in the proper status.
Targeted for Production SandboxesCOM-5579The KCCP version of the Get Returns API did not include any product options in the items array, though that information was provided in the Get Returns API on the previous version of eCommerce. The KCCP version of this API has been updated so that product options are passed to the return record.
Targeted for Production SandboxesCOM-5505The "Send Test Email" option in the Site Editor did not actually send a test email as expected. This option has been removed for now, until support for that function is in place.
Targeted for Production SandboxesCOM-5150 (reported by Sun & Ski and Home Hardware)Orders with declined payments were unable to be canceled as they couldn't be refunded or voided, leaving them stuck in processing. This behavior has been updated so that unpaid and fully voided orders with canceled shipments can be successfully canceled.
Targeted for Production SandboxesCAT-1393 (reported by Proactiv)The Avalara application was showing a "CompletedFailure" status code in its event log after fulfilling a shipment, though the event was successfully processed. This has been fixed so that the event status code will properly display "Success" when appropriate.
Targeted for Production SandboxesCOM-5690 (reported by Ace Hardware)Credits and refunds on gift cards were being duplicated when there were multiple payments on an order. This has been corrected so that these payment actions only occur once per order for the proper gift card record. 
Targeted for Production SandboxesFFMT-3227 The Swagger spec was incorrect for the Get Workflow Processes API response. This has been fixed so the proper response data models are shown.