All Releases
February 19, 2026 February 12, 2026 January 22, 2026 February 5, 2026 January 29, 2026 January 15, 2026 January 8, 2026 January 1, 2026 December 25, 2025 December 18, 2025 December 11, 2025 December 4, 2025 November 27, 2025 November 20, 2025 November 13, 2025 November 6, 2025 October 30, 2025 October 23, 2025 October 16, 2025 October 9, 2025 October 2, 2025 September 25, 2025 September 18, 2025 September 11, 2025 September 4, 2025 August 28, 2025 August 21, 2025 August 14, 2025 August 7, 2025 July 31, 2025 July 24, 2025 July 17, 2025 July 10, 2025 July 3, 2025 June 26, 2025 June 19, 2025 June 12, 2025 June 5, 2025 May 29, 2025 May 22, 2025 May 15, 2025 May 8, 2025 May 1, 2025 April 24, 2025 April 17, 2025 April 10, 2025 April 3, 2025 March 27, 2025 March 20, 2025 March 13, 2025 March 6, 2025 February 27, 2025 February 20, 2025 February 13, 2025 February 6, 2025 January 30, 2025 January 23, 2025 January 16, 2025 January 9, 2025 January 2, 2025 December 26, 2024 December 19, 2024 December 12, 2024 November 28, 2024 November 21, 2024 November 14, 2024 November 7, 2024 October 31, 2024 October 24, 2024 October 17, 2024 October 10, 2024 October 3, 2024 September 26, 2024 September 19, 2024 September 12, 2024 September 5, 2024 August 29, 2024 August 22, 2024 August 15, 2024 August 8, 2024 August 1, 2024 July 25, 2024 July 18, 2024 July 11, 2024 June 27, 2024 June 20, 2024 June 13, 2024 June 6, 2024 May 30, 2024 May 23, 2024 May 16, 2024 May 9, 2024 May 2, 2024 April 25, 2024 April 18, 2024 April 11, 2024 April 4, 2024 March 28, 2024 March 21, 2024 March 14, 2024 March 7, 2024 February 29, 2024 February 22, 2024 February 15, 2024 February 8, 2024 February 1, 2024 January 25, 2024 January 18, 2024 January 11, 2024 January 4, 2024 December 21, 2023 December 14, 2023 December 7, 2023 November 30, 2023 November 16, 2023 November 9, 2023 November 2, 2023 October 26, 2023 October 19, 2023 October 12, 2023 October 5, 2023 September 28, 2023 September 21, 2023 September 14, 2023 September 7, 2023 August 31, 2023 August 24, 2023 August 17, 2023 August 10, 2023 August 3, 2023 July 27, 2023 July 20, 2023 July 13, 2023 July 6, 2023 June 29, 2023 June 22, 2023 June 15, 2023 June 8, 2023 June 1, 2023 May 25, 2023 May 18, 2023 May 11, 2023 May 4, 2023 April 27, 2023 April 20, 2023 April 13, 2023 April 6, 2023 March 30, 2023 March 23, 2023 March 16, 2023 March 9, 2023 March 2, 2023 February 23, 2023 February 16, 2023 February 9, 2023 February 2, 2023 January, 2023 December, 2022 November, 2022 October, 2022 September, 2022 August, 2022 July, 2022 June, 2022 May, 2022 April, 2022 March, 2022 February, 2022 January, 2022 December, 2021 November, 2021 October, 2021 September, 2021 August, 2021 July, 2021 June, 2021 May, 2021 April, 2021 March, 2021 February, 2021 January, 2021 December, 2020
View all releases

January 15, 2026 release notes

Highlights

Operations Portal

Assignee Management for Content Pages

Team members can now be assigned to content pages across the Operations Portal using customizable assignment types, helping teams stay organized and aligned.

The assignee feature provides a streamlined way to manage content responsibilities by allowing users to assign team members to specific pages for activities such as content creation, review, and follow-up tasks. Users can select an assignment type from a configurable dropdown menu, with values that can be customized from the Settings page to match organizational workflows. Adding an assignee is simple: select an assignment type, then search for and choose a team member from the suggestion list.

This functionality is available across multiple areas of the portal, including Pages, Page Drafts, FAQ Details, and FAQ Draft Details screens. The Assignees section appears consistently in each location and supports adding multiple assignees to a single page. Assignees can be removed at any time by clicking the X icon next to the entry.

This feature improves visibility into content ownership and supports better coordination across teams involved in content management.

This feature is now available in the Operations Portal across all supported content page types.
For more details, please refer to the instructional video walkthrough.

https://youtu.be/oQsejlCMRQk

Tickets

  1. KOD-11715: Kodaris - Digital Payment Application
  2. KOD-25041: AI PIM project
  3. KOD-26692: Scheduled Payments not Processing Created From Ticket 27213
  4. KOD-26949: Warehouse on pickUp option tweaks
    • Regression Tests
    • Case 1
      • Search for a product.
      • Add product to cart using pickup method.
      • Navigate to cart page.
      • Verify warehouse subheader shows correct warehouse for the item.
      • Change selected warehouse/address in header.
      • Verify warehouse subheader still shows the original warehouse (not the new selected one).
      • Verify fulfillment field warehouse matches the subheader.
      • Add new product to cart with pickup.
      • Verify new product uses the new selected warehouse.
      • Verify old products still use the original warehouse.
    • Tests
    • Case 1
      • Search for a product.
      • Verify the pickup option shows "Ship to [Selected Warehouse City] ".
      • Verify delivery option renders correctly.
      • Navigate to the product details page.
      • Verify the pickup option shows "Ship to [Selected Warehouse City] ".
      • Change the customer selected warehouse.
      • Verify fulfillment field is updated with the new warehouse citay.
  5. KOD-28221: One Time Auth Created From Ticket 38172
  6. KOD-28615: Update AplusErpLogicIntegrator to handle taxes properly for Avalara based on A+ ERP
    • Regression Tests
    • Case 1
      • Make sure both useAplusPricingEngineV2 and useAplusLogicIntegratorV2 are disabled.
      • Steps:
      • Create an order.
      • Change delivery address.
      • Add line items.
      • Expected: The new tax logic should NOT run; items should remain in their default state.
      • No ADDRESS_TAXABLE_TYPE , IS_ORDER_TAXABLE settings created.
      • Test this both creating an order in the operations portal and on the customer side using the cart.
    • Case 2
      • useAplusLogicIntegratorV2 = 1.
      • Company with example warehouseCode = "WH1".
      • Address with example warehouseCode = "WH2".
      • Steps:
      • Create order.
      • Change delivery address to address with WH2.
      • Expected:
      • Order items get warehouse = "WH2".
      • Order gets warehouseCode = "WH2".
      • WHSE order setting updated.
      • Can also check that nothing is updated when we do the same thing and the setting is set to 0.
    • Tests
    • Test 1
      • useAplusLogicIntegratorV2 = 1.
      • For all tests we need the following settings:
      • useAplusLogicIntegratorV2 = 1 and
      • useAplusPricingEngineV2 = 1
      • Create/find a Company with taxableType = "n"
      • Steps:
      • Create an order for this company.
      • Add items to the order.
      • Change the delivery address.
      • Expected: All order items should have taxed = false.
      • Company with taxableType = "y" or blank.
      • Steps:
      • Create an order for this company.
      • Add items to the order.
      • Change the delivery address.
      • Expected: Order items should have taxed = true
    • Case 2
      • Company with taxableType = "y" (taxable)
      • CompanyAddress with taxableType = "n" (exempt)
      • Steps:
      • Create an order for this company.
      • Change delivery address to the tax-exempt address.
      • Check order items.
      • Expected: All order items should have taxed = false (address overrides company).
      • Company with taxableType = "n" (exempt).
      • CompanyAddress with taxableType = "y" (taxable).
      • Steps:
      • Create an order for this company.
      • Change delivery address to the taxable address.
      • Check order items.
      • Expected: All order items should have taxed = false.
      • For both of these cases we should have
      • ADDRESS_TAXABLE_TYPE - should contain the address's taxableType value.
      • IS_ORDER_TAXABLE - should be "y" or "n" based on company/address logic.
    • Case 3
      • Add a new line item to the order via the admin portal.
      • Check the new item's taxed status (it should match the rest of the order items).
    • Case 4
      • Customer account with multiple addresses,
      • One address tax-exempt (taxableType = "n"),
      • One address taxable (taxableType = "y"),
      • Steps:
      • Log in as customer,
      • Add items to cart,
      • Change delivery address to tax-exempt address,
      • Check cart items' tax status,
      • Change delivery address to taxable address,
      • Check cart items' tax status again,
      • Expected: Items should update their taxed status based on the selected address.
  7. KOD-28844: Guest Pricing Mismatch Between Website and ERP
  8. KOD-28962: Tax Exempt Customers - Avalara Integration
  9. KOD-29150: Order / Invoice Documents
    • Regression Tests
    • Case 1
      • Check that the order templates:
      • Order Email
      • Order PDF
      • Order Details
      • Still work as expected without issues/errors.
    • Tests
    • Case 1
      • Generate/open the three order templates:
      • Order Email
      • Order PDF
      • Order Details
      • They should match the three examples that APA sent over.
      • Can generate the templates on the example orders APA gave and compare the placing and data to be sure it's correct.
  10. KOD-29151: Replatform - Filter products by 'In Stock' in My Warehouse on PLPs
    • Regression Tests
    • Case 1
      • Confirm that the search or category page loads without issues and that the in stock filter is present on that page.
    • Case 2
      • Confirm that for guests the in stock filter is displayed as in stock in store, and that it is also displayed for logged in users.
    • Case 3
      • Confirm that when we select yes, the search URL includes the query parameter inStockAtWarehouse= with the code of the selected warehouse.
    • Case 4
      • Confirm that we can change the selected warehouse in the aside menu.
    • Tests
    • Case 1
      • Confirm that if we change the warehouse while the in stock filter is enabled, the inStockAtWarehouse query parameter is removed from the URL and the in stock filter is no longer selected.
  11. KOD-29171: Update Shipping Options
  12. KOD-29183: PO Number Not Found
  13. KOD-29198: AP: PO Number Not Found
  14. KOD-29201: Kodaris - Update Default Store Input in Customer Portal
    • Regression Tests
    • Case 1
      • Login to the customer portal.
      • Go to the Profile tab.
      • Change value for Default store field.
      • Data should be changed.
      • Make sure if autocomplete input haven’t property openOnClick , it should work as before, (drop down shows only if we type some text).
    • Tests
    • Case 1
      • Login to the customer portal.
      • Go to the Profile tab.
      • Clear value for Default store field.
      • Click on empty Default store input.
      • List with options should appear.
  15. KOD-29202: AP: PO Number Not Found
  16. KOD-29211: Switch ERP based on warehouse selection after splitting orders (multicono)
  17. KOD-29229: Make “Login for Pricing” Clickable for Guests
    • Regression Tests
    • Case 1
      • Open the product list (list view and grid view) and any product details page as a guest user and verify they look correct.
    • Case 2
      • Open the product list (list view and grid view) and any product details page as a logged-in user and verify they look correct.
    • Tests
    • Case 1
      • As a guest user, open the Product List and find a product without a price.
      • Verify that the label “Login for Price” is displayed:
      • On the product list (in list view and grid view).
      • On the product details page.
    • Case 2
      • Click on the “Login for the Price” label and confirm that it redirects you to the login page:
      • From the product list page.
      • From the product details page.
  18. KOD-29260: Implementation - Price issue
  19. KOD-29268: Kodaris Mappings - PIM Exports
    • Tests
    • Case 1
      • We should do the pattern test for each exporter. Here’s step-by-step:
      • Open User Scripts page, find the appropriate script document.
      • Run it, check in the platform logs that there’s no errors.
      • Open company with the code kodarissystem. Open its internal files.
      • Check the generated document, compare it with the data from the customer.
  20. KOD-29291: OA: New Customer Parser Setup
  21. KOD-29293: OA: New Customer Parser Setup
  22. KOD-29305: Switch cono
  23. KOD-29311: Move order templates to the operations portal
    • Regression Tests
    • Case 1
      • Regular order:
      • Verify that the order template looks good on the customer side and the order email/pdf looks good.
      • Based on different conditionals check next:
      • When order status is Invoiced or Paid, the label on the right top corner of the template will be Invoice, in other cases it will be Order.
      • When order status is Paid/Shipped/Invoiced, text for subtotal will be Shipped Subtotal, in other cases it will be Subtotal.
      • If the order has tracking numbers, we are showing them.
    • Case 2
      • Cash quote.
      • There are two options that can be used to find Cash Quotes.
      • You can search on orders screen using field Order Type Details and value should be Cash Quotes.
      • Navigating to the Cash Quotes screen.
      • Need to be tested:
      • Verify that the order template looks good on the customer side and the order email/pdf looks good. You should see the ‘Quote’ label on the right top corner of the template and Expiration Date.
    • Case 3
      • Navigate to quotes screen:
      • You should see next text on templates:
      • Please note that the quote's expiration date, pricing, and lead times are subject to change based on manufacturing updates.
    • Case 4
      • Test that orders that have product configurator items still looks good on templates and you can see all options that were chosen.
    • Case 5
      • Test that thank you page still look good.
      • You will need to place an order and then you will see the thank you page.
  24. KOD-29334: Check on Restriction in Attribute Codes
    • Regression Tests
    • Case 1
      • Go to Products > Filter Categories.
      • Create a new FacetGroup (code: fg_test_group , name: "Test Group").
      • Go to PIM > Attributes > Import > Create Update.
      • Upload attached test_attribute_with_special_symbols.csv and run import.
      • Go to Events, wait for event processing and verify import failed with validation error "Code should not contain unsafe characters".
      • Go to PIM > Attributes and verify that attribute was not created.
    • Case 2
      • Ensure an attribute exists (from previous tests).
      • Go to PIM > Attributes.
      • Find and delete some existing attributes.
      • Verify that it was successfully deleted.
    • Tests
    • Case 1
      • Go to Products > Filter Categories.
      • Create a new FacetGroup (code: fg_test_group , name: "Test Group").
      • Go to PIM > Attributes > Import > Create Update.
      • Upload attached test_attributes.csv and run import.
      • Go to Events, wait for event processing and verify no errors occurred.
      • Go to PIM > Attributes and verify that attributes were imported successfully.
    • Case 2
      • Ensure Test Case 1 was completed.
      • Go to PIM > Attributes > Import > Create Update.
      • Upload attached test_attributes.csv again and run import
      • Go to Events, wait for event processing and verify no errors occurred and attributes were updated successfully.
  25. KOD-29370: Check on Importing Files from Export
  26. KOD-29375: Line References not always with correct line
    • Regression Tests
    • Case 1
      • Check that when you push your order to ERP, it still push to ERP and you can see OrderChange event under system events.
    • Case 2
      • Check that when you push your return to ERP, it still push to ERP and you can see OrderChange event under system events.
    • Case 3
      • Check that order templates still looks good.
    • Tests
    • Case 1
      • Check that when order items have user3 field populated we are sending it in right spot.
    • Сase 2
      • Check that order templates we are using weblinenumber when order is pushed to ERP.
    • Case 3
      • When the order has a KCoreCharge item and is already released to ERP, check that the line order is correct.
  27. KOD-29385: Add Assignees to Content Pages - UX
    • Regression Tests
    • Case 1
      • Make sure the following screens don’t break, that the styles look correct and that you are able to modify the details:
      • Page details screen
      • Page Draft details screen
      • FAQ details screen
      • FAQ Draft details screen
    • Tests
    • Case 1
      • For this test, we need to go to CMS - Pages - Details screen.
      • On the right side menu, you should see a new Assignees section.
      • We will test this section to make sure everything works as expected.
      • We will add assignees to the page, switching between different type.
      • Make sure they are added correctly.
      • Also make sure that you can delete them.
      • You should also be able to add an assignee with no assignment type specified.
      • Finally, if you try to add an assignee that’s already been added, you should not be able to add it again.
    • Case 2
      • We will repeat Case 1 on the Page Drafts screen.
    • Case 3
      • We will repeat Case 1 on the FAQs screen.
      • Note: in this screen, the Assignees section is not in the sidebar, but in the column of fields already there.
    • Case 4
      • We will repeat Case 1 on the FAQ Drafts screen.
      • Note: in this screen, the Assignees section is not in the sidebar, but in the column of fields already there.
    • Case 5
      • For this test, we will go to the Settings screen and look for contentPagesAssignmentTypes.
      • We will test adding more options to this setting and make sure you are able to select them in the dropdown in previously tested pages.
  28. KOD-29409: Rules Engine - Automation
  29. KOD-29434: Kodaris - Update Quote Internal Files from using global endpoints
    • Tests
    • Case 1
      • Go to Quotes → click into a quote → internal files → (make sure there are internal files listed) → click the view icon and make sure it is using the specific quote API: /api/system/quote/{quoteID}/internalFile/{internalFileID}/view
    • Case 2
      • Now download the file → make sure it is also now using the specific quote API: /api/system/quote/{quoteID}/internalFile/{internalFileID}/view?download=true
      • If you don’t see the call in the network tab, you can hover over the download icon and see the new url/api being called on the bottom of the screen.
    • Case 3
      • Go to companies → click into one → Opportunities → click on a quote → internal files → for the view and download, it should be using the quote specific API from above.
    • Case 4
      • Go to companies → click into one → Quotes → click on one → internal files → for the view and download, it should be using the quote specific API from above
      • If you don’t see the call in the network tab, you can hover over the download icon and see the new URL/API being called on the bottom of the screen.
    • Case 5
      • Go Opportunities → click on a quote → internal files → for the view and download, it should be using the quote specific API from above.
      • If you don’t see the call in the network tab, you can hover over the download icon and see the new URL/API being called on the bottom of the screen.
  30. KOD-29435: Kodaris - Update Template Suggesters with Limited Fields endpoint
  31. KOD-29436: Upgrade Mappings
  32. KOD-29444: Add documentIdentified logic to parser
  33. KOD-29445: Add documentIdentified logic to parser
  34. KOD-29449: Configurator Pricing
    • Regression Tests
    • Case 1
      • Check that the category page appears correctly for both guests and customers.
      • Check that the user page appears correctly for both guests and customers.
      • Check that the price of regular products (with a type other than Configurator) is displayed correctly.
      • Check that when a user adds a regular product (with a type other than Configurator) to the cart, the price in the cart is displayed correctly.
      • Check that there are no price-related errors on the product details page or in the cart.
    • Tests
    • Case 1
      • Verify that the user's price for "Configurator" products is not displayed on the category page.
      • Verify that the price for "Configurator" products is not displayed on the product details page.
      • Verify that the user's price for the “configuratorVariant” product is displayed on the product details page.
      • Verify that the price is displayed correctly when adding a “configuratorVariant” product to the cart.
  35. KOD-29456: Punchout issues
  36. KOD-29465: Implementation - Parser Issue
  37. KOD-29479: Kodaris - Create Server-Side Export for Inventory Conversions
  38. KOD-29481: Problem downloading French order acknowledgements and invoices
  39. KOD-29485: Credit Application - Required & Not Required fields update
  40. KOD-29486: Add UX for superseded product messaging
    • Regression Tests
    • Case 1
      • Go to any product page either by direct link or searching on a term and clicking on an item in the results page.
      • No info messaging should be displayed regarding your search.
    • Tests
    • Case 1
      • Search on a product code that has been superseded.
      • You should be redirected to the supersede product and an info message should display saying something like: This product has been replaced by xxxx.
  41. KOD-29490: Kodaris - Fields Getting Set on Credit App Companies
    • Regression Tests
    • Case 1
      • Create a company when the companyDefaultAddApiValues setting exists.
      • Ensure setting companyDefaultAddApiValues exists with valid JSON.
      • If not, create it using this sample as a setting value: _
      • {"status":"UNVERIFIED","customerType":"CUSTOMER","priceIDCode":1}
      • Create a new company via Operations Portal.
      • Verify company created successfully.
      • Verify no errors occur during company creation.
    • Case 2
      • Create a company when the companyDefaultAddApiValues setting is empty/missing.
      • Ensure setting companyDefaultAddApiValues does NOT exist or is empty.
      • Create a new company via Operations Portal.
      • Verify company created successfully.
      • Verify no errors occur during company creation.
  42. KOD-29497: Ship to: Drop down options formatting
    • Tests
    • Case 1
      • Make sure in the cart the shipping address input list has format: Company Name, Street Address, City.
    • Case 2
      • Make sure in the header the shipping address input list has format: Company Name, Street Address, City.
  43. KOD-29501: Price Book Downloads
    • Tests
    • Case 1
      • Go to the “Order Templates” screen (which are catalogs).
      • Select a catalog from the Company-Wide Order Templates.
      • In the Actions dropdown, check if there is an option to Export Price List.
      • You should only see that option if the catalog has results and the setting "allowCustomerPriceBookDownload" is set to true on the operations portal.
      • Change those conditions to make sure the option only appears in those cases.
    • Case 2
      • Now, we will click the button to Export Price List.
      • A new modal should appear indicating that the exporting is in progress and that an email will be sent.
      • Wait for the email and click on the link. You should be taken back to the website with a new modal, asking you to select between CSV and NDJSON for the format and entering a fileName.
      • Finally, you can download the file.
      • Test with different combinations for the format and fileName and make sure the document is downloaded following that.
  44. KOD-29508: Home Page - Footer - Branches Info changes
    • Regression Tests
    • Case 1
      • Check that footer still loads fine for English and French languages.
    • Tests
    • Case 1
      • For Montreal work hours we changed the time to be Monday to Thursday - 6:00am to 4:30pm Friday - 6:00am to 4:00pm in footer.
      • Also, check that this change applies for French.
  45. KOD-29510: Change Sign In Screen Messaging
  46. KOD-29518: Filterable fields on the Rebate Screen
  47. KOD-29519: Fix First Name being assigned to Last Name on assignments
    • Tests
    • Case 1
      • Navigate to the Operations Portal > Tickets > select a Ticket.
      • Open debugger.
      • Since the current UX does not display name and last name, you need to use a debugger, so open browser’s debugger.
      • Add a new employee assignment for an administrator with distinct first/last names.
      • Verify that name and last name are properly set within the network tab.
      • Repeat the same steps with Customer Assignments instead of Employee Assignments if applicable.
    • Case 2
      • Repeat the same steps in Case 1, but navigate to Company Addresses > select a Company address.
  48. KOD-29521: Add the ability to customize template
  49. KOD-29530: Add contentDraftView and contentDraftEdit roles to view the FAQ Drafts page
    • Regression Tests
    • Case 1
      • For each of the following roles, confirm that the user can open the FAQ Drafts page when the user has only one role at a time:
      • superuser
      • administrator
      • contentView
      • contentEdit
      • Verify that the FAQ Drafts page cannot be opened unless the user has at least one of the roles listed above.
    • Tests
    • Case 1
      • For each of the following roles, try to open the FAQ Drafts page when the user has only one role at a time and does not have any of these roles:
      • superuser
      • administrator
      • contentView
      • contentEdit
      • Roles to test:
      • contentDraftView
      • contentDraftEdit
  50. KOD-29531: Kodaris.com – Update Summit Page
  51. KOD-29535:Integration
  52. KOD-29537: Report issues and fixes
  53. KOD-29536: Credit Hold Banner Update
    • Regression Tests
    • Case 1
      • Check that the header layout looks good to the user.
      • Check that the cart page layout looks good to the user.
      • Check that there are no errors in the console.
    • Tests
    • Case 1
      • Verify that ALERT banners appear in the header and cart for Accounts on Hold.
      • Verify that the background and text color of ALERT banners match the "Shop" button.
      • Verify that banners appear correctly on both desktop and mobile devices.
  54. KOD-29542: Units of Measure / Units of Conversion Issues
    • Regression Tests
    • Case 1
      • Check that you can still add normal products to cart without issues.
    • Case 2
      • On products with units, check that you can toggle between the two, the price on the product is updated, and you can add products with different units selected to your cart.
    • Case 3
      • On products with minimum order qty, interval order qty, or maximum qty, check that these constraints still work when you try to add the product to the cart.
      • E.g. if a product has an interval restriction setup of 6, you should only be able to add to cart if your qty is 6, 12, 18… etc.
    • Tests
    • Case 1
      • Check on a product that has different units and interval order qty setup.
      • On the base unit (set as unitSell on the product) the interval order qty constraints should be working.
      • If you switch to a different unit on the product, you shouldn’t get the interval order qty restriction when trying to add the product to your cart.