May 17, 2022 — 1.2218 Service Update

Announcement: API Rate Limiting

Kibo now enforces rate limiting on API requests in sandbox, pre-prod, and production testing environments. If you submit too many requests to a API in a certain period of time, then further requests will be rejected by Kibo to avoid overburdening the Kibo Composable Commerce Platform system and negatively impacting performance for other users. For more information about how rate limits work and how to self-manage your own implementation, see the API Best Practices.

Production Tenant 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.

Production Sandbox Features

eCommerce & Order Management Functionality

  • Shipping Manifest Error Message: When an attempt to create shipping manifests for Canada Post fails, the error response will now include a list of affected shipment(s) that are causing the issue. Previously, you would have had to test generating the manifest for one shipment at a time to determine which were at fault. The error message also now prompts you to refresh the page, which is the recommended action in this scenario.
  • Fulfiller UI Advanced Search: Additional search parameters have been added to the Advanced search options of the Fulfiller UI for Shipment Number, Order Number, and UPC (which maps to the Product Code). While you could already search by shipment and order numbers in the quick search, adding them to the Advanced menu allows for more fine-tuned queries. For instance, using the Advanced menu to filter by Shipment Number will restrict the results to only those with a matching Shipment Number but the quick search may have returned matches from other fields as well.
  • Subscription Enhancements: More enhancements have been made to Subscriptions.
    • When a subscription is created from an order, the initial order is saved as parentOrderId in the subscription data.
    • Validation has been added to ensure that if an item is set up as subscription-only, then it cannot be bought as a one-time purchase and attempting to do so will result in an error.
    • Item-level and order-level subscription discounts are now appropriately displayed in subscription details in a similar format to B2B quotes, including the discount name.
    • When editing a subscription from the Customers page and adding a configurable product, a modal will now appear that allows you to select a product variation. 
    • Validation has also been added to product attributes to ensure that the Separate Product Extras During Subscription Creation attribute used for configurable bundles can only be enabled if Distribute Pricing to Extras on Shipment Creation is also enabled. This may also be called “Split Extras in Subscriptions.”

Bug Fixes

The following list summarizes resolved issues for this release.

StatusResolution
Targeted for Production TenantsWhen 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 TenantsWhen 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 TenantsA 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 TenantsMultiship 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 TenantsThe 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 TenantsThe "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 TenantsOrders 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 TenantsThe 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 TenantsCredits 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 SandboxesWhen viewing the mobile Fulfiller UI, page elements were offset and pushed to the left side which caused words to wrap around and make the page difficult to read. This has been fixed so that tables and other elements are properly displayed on mobile.
Targeted for Production SandboxesOrders canceled by Cybersource during the fraud review process did not trigger Order Cancel email notifications. This has been corrected so that cancellation emails are properly sent to the customer when Cybersource cancels their order.
Targeted for Production SandboxesTransfer shipments were not visible on the Admin order details page if the order had more than 50 shipments. This has been fixed by changing the limit to 80 shipments for now, though paging may be added in the future for better support. Currently, there may be performance issues on the page if the order has more than 50 shipments.
Targeted for Production SandboxesThe Import/Export tool was experiencing errors in sandbox environments when the user attempted to download any export job. This was due to the cache not refreshing and returning old data when retrieving a job. This has been corrected so that exports can be successfully downloaded.  
Targeted for Production SandboxesThe GBP currency was being incorrectly displayed as USD in price lists and when selecting products to order on the storefront. This has been corrected so that the configured currency is displayed in price lists as expected.
Targeted for Production SandboxesWhen configuring a product type for digital gift cards, the Advanced option for “This product type is a digital gift card” did not properly map the goodsType value in API data. The interface has been updated to list all of the possible options with proper mapping: physical items, service items, digital items, digital credit items, and digital gift cards.
Targeted for Production SandboxesMerchandizers were able to edit the spell correction and whitespace fields on the Search Settings configuration page, which should not have been allowed for the merchandizing role. Attempting to change those fields still resulted in the proper error, but the UI has now been updated so that these configurations are disabled from interaction in the first place.
Targeted for Production SandboxesWhen there were a large number of facets in a catalog, changes to these facets could not be saved from the Site Editor due to timeout errors. This prevented adding and removing facets as well. Optimizations have been made so that facet edits can now be successfully saved without timing out.
Targeted for Production SandboxesAdding the same subscription product to a subscription twice with different frequencies merged the line items when they should have stayed separate. This has been fixed so that the product remains as a separate line item if it is re-added to the subscription with a different frequency. This fix also applies to trial products (where re-adding the same trial product with a different frequency will keep it as a separate line item) and when the same product is added as both a subscription and one-time purchase on the order.
Targeted for Production SandboxesSelecting a saved address to be a customer's new primary address was not successful, as the account details would still display the old primary address after clicking Save. This has been fixed so that primary addresses will properly update with the selected address.
Targeted for Production SandboxesOn Order Management-only implementations, all completed orders were displaying the "This order is an imported historical order and cannot be edited" message even when it was not an imported order. This has been corrected so that the message is only displayed on applicable orders and shipments.
Targeted for Production SandboxesAttempting to refresh inventory was returning a "foreign key" error from the database. This process has been updated so that refreshes can be successfully performed without this error.


Restricted Content

Internal Release Notes

Production Tenant Features

Client-Facing Updates

  • Imported Completed Orders (COM-5446): 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): 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, FFMT-2974, 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.

Production Sandbox Features

Client-Facing Updates

  • Shipping Manifest Error Message (FFMT-3110): When an attempt to create shipping manifests for Canada Post fails, the error response will now include a list of affected shipment(s) that are causing the issue. Previously, you would have had to test generating the manifest for one shipment at a time to determine which were at fault. The error message also now prompts you to refresh the page, which is the recommended action in this scenario.
  • Fulfiller UI Advanced Search (FFMT-3051): Additional search parameters have been added to the Advanced search options of the Fulfiller UI for Shipment Number, Order Number, and UPC (which maps to the Product Code). While you could already search by shipment and order numbers in the quick search, adding them to the Advanced menu allows for more fine-tuned queries. For instance, using the Advanced menu to filter by Shipment Number will restrict the results to only those with a matching Shipment Number but the quick search may have returned matches from other fields as well.
  • Subscription Enhancements: More enhancements have been made to Subscriptions.
    • (COM-5686) When a subscription is created from an order, the initial order is saved as parentOrderId in the subscription data.
    • (COM-5649) Validation has been added to ensure that if an item is set up as subscription-only, then it cannot be bought as a one-time purchase and attempting to do so will result in an error.
    • (COM-5632) Item-level and order-level subscription discounts are now appropriately displayed in subscription details in a similar format to B2B quotes, including the discount name.
    • (COM-5620) When editing a subscription from the Customers page and adding a configurable product, a modal will now appear that allows you to select a product variation. 
    • (COM-5566) Validation has also been added to product attributes to ensure that the Separate Product Extras During Subscription Creation attribute used for configurable bundles can only be enabled if Distribute Pricing to Extras on Shipment Creation is also enabled. This may also be called “Split Extras in Subscriptions.”

Internal Updates

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

  • COM-5688: New internal-only APIs have been created to support converting an order to a subscription and setting a price list. The Convert Order To Subscriptions endpoint (…/subscriptions/convertOrderToSubscriptions) will accept an orderID in the URL and generate a subscription for it, allowing engineers to retry subscription creation in the event of a failure. The Change Pricelist On Subscription API (…/subscriptions/changePricelistOnSubscription) will update the pricelist code on a subscription and reprice the subscription.
  • VAMP-948: When an endpoint threw an exception and was called again with the same parameters, the stack trace would not be displayed for the second exception which made troubleshooting difficult. Now, the stack trace will be retained for each exception.
  • CHAR-3509: Optimizations have been done to the DataProvider process which include allowing a partial cache response to be used. Previously, when the cache returned with a partial response then it was counted as a miss and the database was re-queried which could possibly cause slow performance.
  • VAMP-1661: Localization has been added to Mozu.AppDev.
  • TECH-513 and COM-5749: The SiteBuilder Admin has been migrated to .NET 6. Also, QA has been done on the Mozu.SiteSetting .NET 6 upgrade.
  • SU-2405: Further back-end work has been done to support better role behaviors in Search APIs. SearchSynonymRead is now a required behavior in order for the user to hit the List and Update Synonyms endpoints.
  • CHAR-3594: An inventory job has been built that will delete old inventory records, improving location and aggregate exports by allowing the includeNegativeInventory flag to be enabled where those exports would otherwise take forever and use a lot of memory. This job runs once a day, but its time threshold can be configured at the tenant level (as well as turning this job off).

Bug Fixes

The following list summarizes resolved issues for this release.

StatusJIRA TicketResolution
Targeted for Production TenantsFFMT-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 TenantsCOM-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 TenantsCOM-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 TenantsCOM-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 TenantsCOM-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 TenantsCOM-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 TenantsCOM-5150 (reported by Home Hardware and Sun & Ski)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 TenantsCOM-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 TenantsCOM-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 TenantsCOM-3227The Swagger spec was incorrect for the Get Workflow Processes API response. This has been fixed so the proper response data models are shown.
Targeted for Production SandboxesFFMT-3132 (reported by United Hardware)When viewing the mobile Fulfiller UI, page elements were offset and pushed to the left side which caused words to wrap around and make the page difficult to read. This has been fixed so that tables and other elements are properly displayed on mobile.
Targeted for Production SandboxesCOM-5724 (reported by Ace Hardware)Orders canceled by Cybersource during the fraud review process did not trigger Order Cancel email notifications. This has been corrected so that cancellation emails are properly sent to the customer when Cybersource cancels their order.
Targeted for Production SandboxesCOM-5716 (reported by Giant Tiger)Transfer shipments were not visible on the Admin order details page if the order had more than 50 shipments. This has been fixed by changing the limit to 80 shipments for now, though paging may be added in the future for better support. Currently, there may be performance issues on the page if the order has more than 50 shipments.
Targeted for Production SandboxesCOM-5578 (reported by Pearson)The Import/Export tool was experiencing errors in sandbox environments when the user attempted to download any export job. This was due to the cache not refreshing and returning old data when retrieving a job. This has been corrected so that exports can be successfully downloaded.  
Targeted for Production SandboxesCAT-1254 (reported by Athletic Greens)The GBP currency was being incorrectly displayed as USD in price lists and when selecting products to order on the storefront. This has been corrected so that the configured currency is displayed in price lists as expected.
Targeted for Production SandboxesCAT-1228 (reported by Sun & Ski)When configuring a product type for digital gift cards, the Advanced option for “This product type is a digital gift card” did not properly map the goodsType value in API data. The interface has been updated to list all of the possible options with proper mapping: physical items, service items, digital items, digital credit items, and digital gift cards.
Targeted for Production SandboxesSU-1985Merchandizers were able to edit the spell correction and whitespace fields on the Search Settings configuration page, which should not have been allowed for the merchandizing role. Attempting to change those fields still resulted in the proper error, but the UI has now been updated so that these configurations are disabled from interaction in the first place.
Targeted for Production SandboxesCAT-1172 (reported by United Hardware)When there were a large number of facets in a catalog, changes to these facets could not be saved from the Site Editor due to timeout errors. This prevented adding and removing facets as well. Optimizations have been made so that facet edits can now be successfully saved without timing out.
Targeted for Production SandboxesCOM-5378Adding the same subscription product to a subscription twice with different frequencies merged the line items when they should have stayed separate. This has been fixed so that the product remains as a separate line item if it is re-added to the subscription with a different frequency. This fix also applies to trial products (where re-adding the same trial product with a different frequency will keep it as a separate line item) and when the same product is added as both a subscription and one-time purchase on the order.
Targeted for Production SandboxesSE-935 (reported by Home Hardware)Selecting a saved address to be a customer's new primary address was not successful, as the account details would still display the old primary address after clicking Save. This has been fixed so that primary addresses will properly update with the selected address.
Targeted for Production SandboxesCOM-5828 (reported by Laura Canada)On Order Management-only implementations, all completed orders were displaying the "This order is an imported historical order and cannot be edited" message even when it was not an imported order. This has been corrected so that the message is only displayed on applicable orders and shipments.
Targeted for Production SandboxesCHAR-3910 (reported by AM Retail)Attempting to refresh inventory was returning a "foreign key" error from the database. This process has been updated so that refreshes can be successfully performed without this error.
Targeted for Production SandboxesTECH-740KPP Google Catalog imports failed when over 26mb, due to a Kestral limit of 30k bytes. This limit has been changed to 60 with an environment variable override.
Targeted for Production SandboxesCHAR-3784Some inventory tests passed when running in isolation but failed when run together or when running system tests. This has been fixed so that the results of these tests is the same regardless of whether they are run in isolation or in a test suite.