All Releases
April 9, 2026 April 2, 2026 March 26, 2026 March 19, 2026 March 5, 2026 March 12, 2026 February 26, 2026 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

March 12, 2026 release notes

Highlights

Commerce

Bank Account Payment Option Now Available in Checkout

The Commerce platform now supports bank account payments during the checkout process, providing customers with an additional payment method alongside existing options.

To enable this functionality, administrators can configure the "allowACHCheckoutPayments" setting through the Operations Portal under Company Details > Developer Fields. Once enabled, customers can complete their purchase by entering bank account details including account name, type, number, and routing information directly at checkout.

The system automatically generates an ACH Terms Agreement PDF document that captures all relevant transaction and customer information. This document is accessible through the Operations Portal's Internal Files tab and can be viewed or downloaded for record-keeping purposes. The feature includes built-in terms and conditions acceptance to ensure compliance requirements are met.

This feature is available now for Commerce sites with proper configuration through the Operations Portal.

For a complete walkthrough of the setup and checkout process, see the accompanying video demonstration.

Single Sign-On for Commerce Site Customers

Customer authentication with Google and Microsoft accounts is now available for the Commerce site.

Commerce site customers can now sign in using their existing Google or Microsoft accounts instead of creating new usernames and passwords. This streamlines the authentication process and allows users to access the platform with credentials they already use daily. The SSO options appear on both the main sign-in page and on any section requiring authentication, such as the Catalogs area.

Configuration is handled through the Operations Portal's Settings screen, where administrators can enable or disable each provider independently. Simply search for "enableCustomerSignInWithGoogle" or "enableCustomerSignInWithMicrosoft" and set the value to 1 to activate the feature, or 0 to disable it. Changes take effect immediately after saving and refreshing the Commerce site.

This feature is now available for all Commerce site customers. Configuration video reference available for implementation guidance.

Customer Portal

Create Company Catalogs Directly from Category Pages

Customers can now create custom catalogs instantly from any category in the Customer Portal with a simple one-click process. This enhancement streamlines catalog management by allowing users to convert existing product categories into organized, shareable catalogs without manual product selection.

To create a catalog, customers simply navigate to their desired category, click the new "Create Catalog" button in the top-right corner, and provide a catalog name. The system automatically includes all products from the selected category. The catalog creation happens in the background, with users receiving confirmation that their catalog will be ready within minutes.

Once created, these catalogs function like any other company catalog with full editing capabilities, including adding or removing products, changing display views, and accessing standard catalog actions such as exporting price lists or bulk cart additions. This feature works across all product categories, giving customers flexibility in how they organize and share their product selections.

This feature is now available in the Customer Portal. For a complete walkthrough, view the tutorial video linked in your product documentation.

Tickets

  1. KOD-26959: Ticket Privacy Roles
  2. KOD-27463: Add metrics to Executive report
  3. KOD-27842: Add product badges (Promo, Sale, Coupon, New, etc.) Created From Ticket 32376
    • Regression Tests
    • Case 1
      • Make sure product list pages and product details pages still load properly.
    • Tests
    • Case 1
      • If an item is part of the clearance category, you should now see a Clearance tag on the product on both the list and detail view.
      • List page should show it on both grid and list view.
      • Test on category view, search view, and catalog view.
    • Case 2
      • If an item is part of the new filter category, you should now see a New tag on the product on both the list and detail view.
      • List page should show it on both grid and list view.
      • Test on category view and search view - will not be on catalog page.
    • Case 3
      • If an item is on sale (pricesByCodes api returns onSale=true), you should now see an On Sale tag on the product on both the list and detail view.
      • List page should show it on both grid and list view.
      • Test on category view, search view, and catalog view.
  4. KOD-28348: National/Regional Quoting
  5. KOD-28552: Microsoft Outlook Integration - Implement Microsoft Email Sync
  6. KOD-28899: Warranty Purchasing
    • Tests
    • Case 1
      • Swagger test case:
      • Enable the applyProductRestrictionRules rule.
      • Create a Restriction FacetGroup.
      • POST /api/system/productFacet
      • with
      • "purpose": "Restriction",
      • "restrictionType": "deny",
      • Create a product under with category assign.
      • Assign Deny Restriction to Category + CustomerGroup
      • POST /api/system/category/{categoryID}/categoryFacetGroup
      • {
      • "facetGroupID": <deny_facetGroupID>,
      • "required": false,
      • "customerGroupID": <customerGroupID>
      • }
      • Search products as Customer IN the denied group.
      • POST /api/user/product/search
      • Expected: Products in the restricted category should NOT appear in results.
    • Case 2
      • Create a Restriction FacetGroup (Allow type).
      • POST /api/system/productFacet
      • with
      • "restrictionType": "allow",
      • "active": true,
      • Assign Restriction to Category + CustomerGroup the same as deny.
      • Search products as Customer IN the denied group.
      • Expected: Products in the restricted category should NOT appear in results.
    • Case 3
      • Create a Rule with "workFlowType": "INTERCEPTOR".
      • POST `/api/system/rule
      • Create a rule in gms-git (example -
      • {"rules": [
      • {"name": "StateRestriction_ShipTo",
      • "conditions": [
      • {"left": "data.company.spendingLimitEnabled",
      • "operator": "equals",
      • "right": "0"}
      • ],
      • "conditionsTrue": [
      • {"type": "restrictionApplies"}
      • ]}
      • ]})
      • Create a Restriction FacetGroup for Rules
      • POST /api/system/productFacet
      • Assign Rule-Based Restriction to Category
      • POST /api/system/category/{categoryID}/categoryFacetGroup
      • With ruleID you get from creating rule.
      • Make a search, if company.spendingLimitEnabled is 0 restricted category should NOT appear.
  7. KOD-29034: Implement Order Assignees v2 endpoints (Phase 2)
    • Tests
    • Case 1
      • Preconditions:
      • System setting orderAssigneesV2Enabled is set to 1 (enabled).
      • The user is on the Quote Detail page.
      • Steps:
      • Verify existing assignees are loaded from the employeeAssignment endpoint.
      • Select an employee from the "Add assignee" autocomplete.
      • Click to add the employee.
      • Verify the employee appears in the assignees list.
      • Click the remove icon (X) next to the employee.
      • Verify the employee is removed from the list.
      • Verify that we’re using `employeeAssignment` endpoints for these operations.
    • Case 2
      • Preconditions:
      • System setting orderAssigneesV2Enabled is set to 0 (disabled).
      • User is on the Quote Detail page for an existing quote.
      • Steps:
      • Select an employee from the "Add assignee" autocomplete.
      • Select an assignment type from the dropdown.
      • Click to add the employee.
      • Verify the employee appears in the assignees list.
      • Click the remove icon (X) next to the employee.
      • Verify the employee is removed from the list.
    • Case 3
      • Preconditions:
      • System setting orderAssigneesV2Enabled is set to 1 (enabled).
      • Steps:
      • Navigate to Order Detail or Cash quote page ( Note: Vendor Invoice pages already using endpoints by default).
      • Verify assignees are loaded from employeeAssigment endpoint.
      • Add a new assignee.
      • Observe the new assignee was displayed.
  8. KOD-29320: Email Marketing Questions
  9. KOD-29350: Pricing Testing
  10. KOD-29422: UX for AI PIM
    • Tests
    • Case 1
      • Navigate to AI PIM > Products.
      • Enter a product name or code in the search bar and confirm the results filter.
      • Open the filter panel and select a filter (e.g., AI Status or Template).
      • Verify the table updates to show only matching products.
      • Clear filters and verify the full list returns.
      • Navigate to the next page using pagination controls, then back.
      • Right-click a column header to show/hide columns and verify the table updates.
      • Drag a column border to resize it and verify the column width changes.
      • Click the refresh button and verify the table reloads.
    • Case 2
      • Navigate to AI PIM > Products.
      • Click a product row that has AI-generated content.
      • Verify the side panel opens on the Compare tab with the Language selector defaulting to "English (en)".
      • Verify four comparison fields are displayed: Name, Short Description, Description, Keywords — each with "Current" and "AI Generated" columns.
      • Click "Generate AI" in the footer and verify the button shows success feedback.
      • Click the copy icon on each field individually and verify the toast confirms each was copied.
      • Click "Copy to Product" in the footer to copy all fields at once and verify the button shows "Copied!" success feedback.
    • Case 3
      • Open a product side panel and click the "Files" tab.
      • Verify attached files are listed with name, mime type, and parse status.
      • Upload a new file using the file upload area and verify it appears in the list.
      • Toggle the "Enable for AI PIM" switch on a file and verify the toast confirms the change.
      • Click "Parse Files" in the footer and verify files show "Processing..." status.
      • Wait for parsing to complete and verify files show "Parsed" status.
      • Click the preview icon on a parsed file and verify the parsed content is displayed.
      • Click the download icon on a file and verify the download starts.
      • Click the delete icon on a file, confirm the dialog, and verify the file is removed.
      • Click "Generate AI" in the footer and verify success feedback.
      • Switch to the Compare tab and verify AI Generated values are populated.
    • Case 4
      • Open a product side panel and click the "URLs" tab.
      • Verify the info alert about URL scraping is displayed.
      • Enter a URL in the textarea, click "Save URLs", and verify success feedback.
      • Click the "Files" tab and verify the URLs file was generated.
      • Click "Parse Files" to parse the URLs file and wait for completion.
      • Click "Generate AI" and verify AI content was generated from the scraped URLs.
      • Switch to the "Settings" tab.
      • Select a template from the "AI PIM Template" dropdown.
      • Enter text in the "AI PIM Prompt (Custom)" textarea.
      • Click "Save Settings" and verify success feedback.
      • Click the "Raw" tab and verify the raw JSON data of the product is displayed.
    • Case 5
      • Navigate to AI PIM > Products.
      • Click "Generate AI" on a row that has files and verify the action triggers.
      • Click "Copy to Product" on a row that has AI content and verify the action triggers.
      • Click "View Details" on a row and verify the side panel opens.
    • Case 6
      • Navigate to AI PIM > Templates using the left nav.
      • Verify template cards are displayed in a grid.
      • Enter a search term in the search field and verify the cards filter accordingly.
      • Click "New Template" and fill in the Name, Code, System Prompt, and User Prompt fields.
      • Click "Save" and verify the new template appears in the grid.
      • Click on an existing template card to edit it, change a field, and save.
      • Click the "Duplicate" button on a template card and verify a copy is created.
      • Click the "Delete" button on a template card, confirm the dialog, and verify it is removed.
  11. KOD-29545: Kodaris-Prevent Non-Numeric Values in Unit Standard Field During Cross-Reference Setup
    • Tests
    • Case 1
      • Go to the Operations Portal. Go to PIM → Cross Reference.
      • For the company that we will use for test make sure that we have created record for NONSTOCK item with Alt Product Code value.
      • Go to Orders → Orders. Select random order related to the selected test company.
      • Go to the order Items tab. Add a NONSTOCK item for this order.
      • Go to “More” dropdown on “NONSTOCK” product and select “Manage Cross Reference”
      • In the opened modal check, that in the “Unit Conversion” field we can’t input any non-numeric value.
  12. KOD-29570: Implementation - SSL
  13. KOD-29572: Replatform - Import Images
  14. KOD-29613: QuickSight - Install pre-built dashboard for website traffic tracking
  15. KOD-29615: Kodaris - Integration
  16. KOD-29681: Implementation - PIM
  17. KOD-29839: Implementation - Payment Methods
  18. KOD-29986: Create App for OpenSearch Data Querying
  19. KOD-29999: Punchout integration
  20. KOD-30016: Buy More, Save More Messaging
    • Regression Tests
    • Case 1
      • Please test that the product details page still looks good both.
    • Case 2
      • Please test that the grid/list view for the category still loads fine.
    • Tests
    • Case 1
      • Log in as a customer.
      • Navigate to products that have price breaks.
      • Verify that you see the next text: Buy 5 or More, Save 15%.
      • Logic for percentage is:
      • (Getting calculated price minus price break price) divided by calculated price and then multiplied by 100.
  21. KOD-30025: Internal Comments Notification emails
  22. KOD-30035: Add Column Filtering to kr-table Component
    • Regression Tests
    • Case 1
      • The search bar and pagination should work.
    • Tests
    • Case 1
      • The documentation should be updated with examples: docs/components/table.md.
    • Case 2
      • Table display:
      • The filter row should be sticky (like the header row) and visually sit directly under the headers.
      • The filter row should align with columns and should handle resizing/scrolling.
      • Sticky filter row stays visible when scrolling vertically.
      • Non-filterable columns should render an empty cell to maintain grid alignment.
    • Case 3
      • Filter input:
      • If input focus: blur or hit ENTER should apply the filter.
      • Should support KQL shorthand syntax.
      • Entering a value without KQL syntax should apply the CONTAINS operator. If CONTAINS is not available for that data type, it should apply the EQUALS operator.
      • Applying invalid values should display a red border, and no API call should be done.
      • A clear button should be visible when the filter has a value.
      • Clicking the clear button should remove the filter and re-fetches.
      • Multiple column filters should combine with AND logic.
      • Changing a filter should reset pagination to page 1.
    • Case 4
      • Advanced filter panel:
      • Clicking the filter icon next to the filter input should open a dropdown/overlay panel, with operator selector and type-specific value inputs.
      • Clicking the Apply button should apply the filter.
      • On value input focus, pressing ENTER should apply the filter.
      • Clicking the Clear button should remove the filter.
      • The panel should close when:
      • the filter is applied or cleared,
      • click outside the panel,
      • hit ESC.
      • Each operator should filter according to its own logic and display the related KQL syntax in the filter input when applied.
      • The operator select should have the options corresponding to each data type and should be tested individually in the next cases.
    • Case 5
      • Boolean data type.
      • Operators:
      • EQUALS
      • NOT_EQUALS
      • EMPTY
      • NOT_EMPTY
    • Case 6
      • Number data type.
      • Operators:
      • EQUALS
      • NOT_EQUALS
      • LESS_THAN
      • LESS_THAN_EQUAL
      • GREATER_THAN
      • GREATER_THAN_EQUAL
      • BETWEEN
      • IN
      • EMPTY
      • NOT_EMPTY
    • Case 7
      • String data type.
      • Operators:
      • EQUALS
      • NOT_EQUALS
      • CONTAINS
      • NOT_CONTAINS
      • STARTS_WITH
      • ENDS_WITH
      • IN
      • EMPTY
      • NOT_EMPTY
    • Case 8
      • Date data type.
      • Date formats:
      • "8/5/21"
      • "08/05/2021"
      • "2021-08-05"
      • "8 2021" (Month+Year)
      • "08 2021" (Month+Year)
      • "Aug 2021" (Month+Year)
      • “August 2021” (Month+Year)
      • "2021" (Year-Only)
      • “21” (Year-Only)
      • Operators:
      • EQUALS
      • NOT_EQUALS
      • LESS_THAN
      • LESS_THAN_EQUA
      • GREATER_THAN
      • GREATER_THAN_EQUAL
      • BETWEEN
      • EMPTY
      • NOT_EMPTY
  23. KOD-30059: Implementation - Payment Methods - Update mapping for credit card payment methods
  24. KOD-30068: Clickable Brand Logos
    • Regression Tests
    • Case 1
      • Open pages where the Customer Image block was previously used.
      • Verify block recovery option.
      • Ensure the "Attempt Block Recovery" button is visible.
      • Click the button.
      • Verify page stability.
      • Confirm that nothing breaks on the Gutenberg page.
      • Ensure the existing page design remains unchanged.
      • Verify Customer Image block functionality.
      • Ensure the block still supports adding links.
      • Verify padding/margins (spacing) can be configured if needed.
      • Confirm the block renders correctly on the page.
    • Tests
    • Case 1
      • Navigate to CMS → Pages.
      • Open an existing page or create a new one.
      • Add images using CM: Custom Image.
      • Add one image with a link.
      • Add another image without a link.
      • Verify clickable image behavior.
      • Click the image that has a link.
      • Verify the user is redirected to the correct page.
      • Ensure the image visually indicates that it is clickable.
      • Verify non-clickable image behavior.
      • Click the image without a link.
      • Verify that no redirect occurs.
  25. KOD-30071: Kodaris - Fix additional UI issues
    • Regression Tests
    • Case 1
      • For every path listed in comments, verify:
      • Categories section displayed without any visual glitches or layout shifts.
      • Click the "Add Category" button.
      • Verify: button is clickable and action works.
    • Case 2
      • Tickets > Ticket Detail.
      • Verify: Notification Emails section is displayed in the sidebar.
      • Add a new notification email.
      • Verify: email appears in the list.
      • Remove the email (click X icon).
      • Verify: email is removed from the list.
    • Tests
    • Case 1
      • For every path listed in comments, verify:
      • Add button displayed correctly within the categories section.
      • Add button content (+ icon and text) is horizontally and vertically centered.
    • Case 2
      • Tickets > Ticket Detail > "Notification Emails" section in the sidebar.
      • Verification:
      • Add a long email (e.g., " very.long.email@extremely-long-domain.com ")
      • Verify: long email is truncated with "..."
      • Verify: email does not overflow the sidebar.
      • Hover over the truncated email.
      • Verify: full email address is shown on hover.
      • Add a short email (e.g., " a@b.co ").
      • Verify: short email displays normally without truncation.
      • Remove the email (click X icon).
      • Verify: email is removed from the list.
  26. KOD-30091: Implementation - Chatbot Integration
  27. KOD-30102: ACH payment method at checkout
    • Regression Tests
    • Case 1
      • Make sure that step 3 is displayed correctly on the checkout page.
      • Make sure that the “Pay with Bank Account” option is displayed when ACH settings are enabled.
      • Ensure that the ACH form contains all fields: Bank Name, Account Name, Account Type, Account Number, Routing Number, Agree to ACH Terms checkbox.
    • Tests
    • Case 1
      • Ensure that a new required field, “Signature,” has been added to the “Pay with Bank Account” form.
      • Verify that the Signature field is displayed in handwritten font.
      • Verify that the form is not submitted if the Signature field is empty.
      • Verify that the ACH Agreement PDF is generated with a signature (check in Operations Portal → Companies Screen → find the company → Internal Files tab).
  28. KOD-30128: Cannot Remove Company Code if Set on a Ticket Template
    • Regression Tests
    • Case 1
      • Ensure that the Company Code can be assigned to the Ticket Template via the Company Code field.
      • Ensure that after assigning the Company Code, the entityID, entityType, and billableCompanyCode fields are filled in correctly.
    • Tests
    • Case 1
      • Ensure that the value is deleted when clearing the Company Code.
      • Ensure that after clearing the Company Code, the related fields (entityID, entityType, billableCompanyCode) are also cleared.
      • Ensure that after reloading the page, the values remain empty.
  29. KOD-30144: Kodaris - Add UX for the bulk adding of products to a catalog
    • Regression Tests
    • Case 1
      • Make sure you can still load a category page and everything looks the same.
    • Case 2
      • On a company/customer catalog, nothing should have changed (should not see create catalog button - should see actions button if there are results or you can modify the catalog and have the right permissions).
    • Case 3
      • When searching for a product, make sure that there is no create catalog button there (should look the same as before).
    • Tests
    • Case 1
      • If you have a companyAdmin or companyCatalogEdit role, you should now see a Create Catalog primary action button on the category pages.
      • Click the button and a pop up will appear → Enter in a catalog name (if you don’t enter in a name, you won’t be able to create the catalog and it will tell you to add the name) and click Create → a success screen should appear saying the catalog creation is in progress and it will take a few minutes to complete → you can either close the dialog or click Go to Catalogs.
      • If you click go to catalogs it will take you to the catalogs screen.
      • After the 5 min interval job runs, navigate to the catalogs page and you should see the new catalog created from that category → click into that catalog and you should see the same amount of products are in that catalog as are in the category.
    • Case 2
      • If you do not have a companyAdmin or companyCatalogEdit role, you should not see the Create Catalog button and therefore cannot create a catalog.
      • As well as if you are logged out, you should not see the create catalog button.
    • Case 3
      • When creating a catalog, if you type in a name that has already been used before (the code of the catalog is the same), it will give you an error and the modal will stay open.
    • Case 4
      • When creating a catalog, if you type in a name that is > 200 characters, it will give you an error and the modal will stay open.
    • Case 5
      • When creating a catalog, if you type in a name that has special characters, it will give you an error and the modal will stay open.
  30. KOD-30147: Implementation - Addons
  31. KOD-30151: Company Group Catalog Pricebook Company Select Cut Off
    • Regression Tests
    • Case 1
      • Navigate to another screen with autocomplete.
      • Open any screen where autocomplete is used.
      • (e.g., Companies → Detailed View).
      • Test Parent Company autocomplete.
      • Click on the Parent Company field.
      • Trigger the autocomplete dropdown.
      • Verify dropdown behavior.
      • Ensure the dropdown is properly sized.
      • Ensure it is fully visible within the page.
      • Verify the user can scroll and select any item from the list.
    • Tests
    • Case 1
      • Open the Operations Portal.
      • Navigate to Generate Price Book.
      • Go to Company Groups → Catalog.
      • Click Actions.
      • Select Generate Price Book.
      • Open Company autocomplete.
      • Click on the Company field.
      • Trigger the autocomplete dropdown.
      • Verify dropdown display.
      • Ensure the dropdown fits within the page layout.
      • Verify it does not overflow outside the visible screen area.
      • Ensure the user can easily scroll and select the last item in the list.
  32. KOD-30162: Add multi-language translation support to AI PIM app - UX
    • Regression Tests
    • Case 1
      • Navigate to AI PIM > Products.
      • Enter a product name or code in the search bar and confirm the results filter.
      • Open the filter panel and select a filter (e.g., AI Status or Template).
      • Verify the table updates to show only matching products.
      • Clear filters and verify the full list returns.
      • Navigate to the next page using pagination controls, then back.
      • Right-click a column header to show/hide columns and verify the table updates.
      • Drag a column border to resize it and verify the column width changes.
      • Click the refresh button and verify the table reloads.
    • Case 2
      • Navigate to AI PIM > Products.
      • Click a product row that has AI-generated content.
      • Verify the side panel opens on the Compare tab with the Language selector defaulting to "English (en)".
      • Verify four comparison fields are displayed: Name, Short Description, Description, Keywords — each with "Current" and "AI Generated" columns.
      • Click "Generate AI" in the footer and verify the button shows success feedback.
      • Click the copy icon on each field individually and verify the toast confirms each was copied.
      • Click "Copy to Product" in the footer to copy all fields at once and verify the button shows "Copied!" success feedback.
    • Case 3
      • Open a product side panel and click the "Files" tab.
      • Verify attached files are listed with name, mime type, and parse status.
      • Upload a new file using the file upload area and verify it appears in the list.
      • Toggle the "Enable for AI PIM" switch on a file and verify the toast confirms the change.
      • Click "Parse Files" in the footer and verify files show "Processing..." status.
      • Wait for parsing to complete and verify files show "Parsed" status.
      • Click the preview icon on a parsed file and verify the parsed content is displayed.
      • Click the download icon on a file and verify the download starts.
      • Click the delete icon on a file, confirm the dialog, and verify the file is removed.
      • Click "Generate AI" in the footer and verify success feedback.
      • Switch to the Compare tab and verify AI Generated values are populated.
    • Case 4
      • Open a product side panel and click the "URLs" tab.
      • Verify the info alert about URL scraping is displayed.
      • Enter a URL in the textarea, click "Save URLs", and verify success feedback.
      • Click the "Files" tab and verify the URLs file was generated.
      • Click "Parse Files" to parse the URLs file and wait for completion.
      • Click "Generate AI" and verify AI content was generated from the scraped URLs.
      • Switch to the "Settings" tab.
      • Select a template from the "AI PIM Template" dropdown.
      • Enter text in the "AI PIM Prompt (Custom)" textarea.
      • Click "Save Settings" and verify success feedback.
      • Click the "Raw" tab and verify the raw JSON data of the product is displayed.
    • Case 5
      • Navigate to AI PIM > Products.
      • Click "Generate AI" on a row that has files and verify the action triggers.
      • Click "Copy to Product" on a row that has AI content and verify the action triggers.
      • Click "View Details" on a row and verify the side panel opens.
    • Case 6
      • Navigate to AI PIM > Templates using the left nav.
      • Verify template cards are displayed in a grid.
      • Enter a search term in the search field and verify the cards filter accordingly.
      • Click "New Template" and fill in the Name, Code, System Prompt, and User Prompt fields.
      • Click "Save" and verify the new template appears in the grid.
      • Click on an existing template card to edit it, change a field, and save.
      • Click the "Duplicate" button on a template card and verify a copy is created.
      • Click the "Delete" button on a template card, confirm the dialog, and verify it is removed.
    • Tests
    • Case 1
      • Navigate to the AI PIM Products page.
      • Click on a product row that has AI-generated content (status "Ready") to open the product panel.
      • Verify the Compare tab is active and a "Language" dropdown appears above the compare fields.
      • Select a non-English language from the Language dropdown (e.g., a language with aiEnabled).
      • Verify the "Current" column updates to show the product language values and the "AI Generated" column shows AI translation values for that language.
      • Verify the "Copy to Product" button in the panel footer now shows the language code suffix (e.g., "Copy to Product (es)").
    • Case 2
      • Navigate to the AI PIM Products page and open a product that has AI translations for a non-English language.
      • Select a non-English language from the Language dropdown in the Compare tab.
      • Verify an edit (pencil) icon appears next to fields that have AI-generated translation values.
      • Click the edit icon on the "Name" field.
      • Verify a textarea appears with the current AI translation value pre-filled and Cancel/Save buttons are shown.
      • Modify the text in the textarea and click "Save".
      • Verify the Save button shows a loading state, then "Saved!", and the edit area closes.
    • Case 3
      • Navigate to the AI PIM Products page and open a product with AI translations.
      • Select a non-English language from the Language dropdown.
      • Click the copy icon on an individual AI-generated field (e.g., Name or Short Description).
      • Verify a success toast appears confirming the field was copied.
      • Click the "Copy to Product (xx)" button in the panel footer to copy all translated fields.
      • Verify the button shows a loading state, then "Copied!", and the Current column values update.
  33. KOD-30167: Contact Us form - Add Contact Reason for Accessibility
    • Regression Tests
    • Case 1
      • Navigate to /spcu/form-contact-us page as a guest.
      • Verify that the page still loads fine for English and French languages.
    • Case 2
      • Navigate to /spcu/form-contact-us page as a customer.
      • Verify that the page still loads fine for English and French languages.
  34. KOD-30176: OA: Test Customer Setup/Map for Order Automation
  35. KOD-30181: Add Punchout specific catalog
    • Regression Tests
    • Case 1
      • If you are logged in as a non punchout customer - the search bar and category tree should be present (check desktop and mobile views).
    • Case 2
      • Note: This is a custom setting that can be added to specific companies, it is not there by default.
      • If you are a punchout customer but the setting “ punchoutLockToCatalog “ on a company is either not present or is not 1 - the search bar and category tree should be present (check desktop and mobile views).
    • Tests
    • Case 1
      • If we are logged in as a punchout customer and this setting “ punchoutLockToCatalog “ is present and set to 1 - we should hide the search bar and categories menu (check desktop and mobile views).
  36. KOD-30183: Add Customer App Listing
  37. KOD-30184: Publish Customer App
  38. KOD-30195: Delete and resync
  39. KOD-30197: Replatform - Automatically set company payment methods based on arsc terms type in CSD
  40. KOD-30208: Update Location Contact Information in Customer Portal from CSD
  41. KOD-30210: Surface Price Conversion for purchase order items and invoice items
    • Regression Tests
    • Case 1
      • Ensure that the grid on the Purchase Order Items page looks and works correctly.
      • Ensure that the grid on the Vendor Invoice Items page looks and works correctly.
    • Tests
    • Case 1
      • Make sure that a new “Price Conv” column appears on the Purchase Order Items page.
      • Make sure that a new “Price Conv” column appears on the Vendor Invoice Items page.
      • Make sure that the “Price Conv” column on the Purchase Order Items page displays the value in the format “ConversionFactor / ConversionUnit”.
      • Make sure that the “Price Conv” column on the Vendor Invoice Items page displays the value in the format “ConversionFactor / ConversionUnit”.
      • Make sure that the “Price Conv” column is empty if ConversionFactor or ConversionUnit are missing.
  42. KOD-30218: Map CSD descrip fields to custom fields and add vendor part number to ICSW
  43. KOD-30226: Document Count Display in Ticket Overview
    • Regression Tests
    • Case 1
      • Open the Tickets page on the Data tab.
      • Verify:
      • The Tickets search table is displayed.
      • Data is loaded and displayed in the table.
      • Open column configuration.
      • Add any column.
      • Verify:
      • The column is displayed in the table.
      • All data is still displayed correctly.
      • Open column configuration again.
      • Remove the added column.
      • Verify:
      • The column is no longer visible.
      • Table displays correctly with default columns.
    • Case 2
      • Open Operations -> Opportunities.
      • Click on any Lead.
      • Navigate to the "Tickets" tab.
      • Verify:
      • The Tickets table is displayed.
      • Data is loaded and displayed in the table.
      • Open column configuration.
      • Add any column.
      • Verify:
      • The column is displayed in the table.
      • All data is still displayed correctly.
      • Open column configuration again.
      • Remove the added column.
      • Verify:
      • The column is no longer visible.
      • Table displays correctly with default columns.
    • Tests
    • Case 1
      • Open the Tickets page on the Data tab.
      • Open column configuration.
      • Find "Customer Files" in the available columns list.
      • Verify:
      • Column is available for selection.
      • Add the column.
      • Verify:
      • The "Customer Files" column is displayed.
      • Find "Internal Files" in the available columns list.
      • Add the column.
      • Verify:
      • The "Internal Files" column is displayed.
      • Find a ticket with count > 0.
      • Open the ticket details.
      • Navigate to "Customer Files" / "Internal Files" tabs.
      • Verify:
      • Count matches the actual number of files.
      • Remove both columns.
      • Verify:
      • Columns are no longer visible.
      • Note: These columns are not supposed to appear on the Search tab.
    • Case 2
      • Open Operations -> Opportunities.
      • Navigate to the "Tickets" tab.
      • Open column configuration.
      • Verify:
      • "Customer Files" column is available.
      • "Internal Files" column is available.
      • Add both columns.
      • Verify:
      • Columns display in the grid.
      • Open the ticket details.
      • Navigate to "Customer Files" / "Internal Files" tabs.
      • Verify:
      • Count matches the actual number of files.
  44. KOD-30230: Implementation - Spin Up System
  45. KOD-30233: Filter to only send active/open invoices and credits automatically
    • Regression Tests
    • Case 1
      • Make sure that when we run sendPDFAutomatedInvoicesToCustomers.js, we don't get any errors, the PDF is generated for 99 payments, and sent to the email address.
    • Tests
    • Case 1
      • Make sure that only payments with active=true are processed when the script is run.
      • Make sure that payments with active=false are NOT processed and NOT sent to customers.
  46. KOD-30238: Payment Fraud Alert Fields Empty
    • Regression Tests
    • Case 1
      • As a logged in customer, make an attempted payment fail.
      • Expected Result:
      • Payment fails with appropriate error message.
      • Company's declinedAttempts setting is incremented by 1.
      • Can verify in the operations portal: Company → Settings → look for declinedAttempts.
  47. KOD-30239: Kodaris - Shared Drive - Custom App
    • Tests
    • Case 1
      • Go to the new app named Shared Drive → you should only see one option of All there.
      • If you have no shared files/folders, there will be a message saying No files or folders.
    • Case 2
      • You should also see a button on the top right for grid view and list view as well as a button that is + New where you can add a new folder, upload a file or upload a folder.
      • Grid view - should load the folders and files in a grid like view with thumbnails similar to google drive (folders are up top and files are below them).
      • List view - table with name and last modified with folders first and then files below
    • Case 3
      • Click the + New button → New Folder → a modal should appear to add a new folder → add a name and click create → modal should close and you will see the folder.
      • If you are drilled into a different folder, that folder will be created inside that folder you are in.
    • Case 4
      • Click the + New button → Upload File → click a file you want to upload → modal should close and you will see the file.
      • If you are drilled into a different folder, that file will be created inside that folder you are in.
    • Case 5
      • Click the + New button → Upload Folder → click a file you want to upload → modal should close and you will see the folder with the files that were inside.
      • If you are drilled into a different folder, that folder will be created inside that folder you are in.
    • Case 6
      • On list view, you can click the sort icon on either name or last modified and the folders/files will be sorted accordingly. Folders will always be on top, files will be on bottom.
    • Case 7
      • On grid view, you can click the name button right above folders → here you can sort on name or last modified as well as ascending or descending → whatever you click on is how the filtering will happen.
    • Case 8
      • On grid view, if you hover over a folder, you will see a trash icon → click on it and a delete confirmation modal should appear → if you click cancel the modal will close and nothing happened → if you click delete, the folder will be deleted.
      • If you hover over a file by the name, you will see 3 dots appear → here you can either download or delete the file → if you click download, the file should download to your computer → if you click delete, a delete modal will appear and ask if you want to actually delete → if you click cancel the modal will close and nothing happened → if you click delete, the file will be deleted.
      • If you click on the thumbnails, you will either see a preview of the file (if it’s allowed or you will see a modal says that the preview is not available and you can download the file.
    • Case 9
      • On the list view, if you hover over a folder, you will see a trash icon to the right → click on it and a delete confirmation modal should appear → if you click cancel the modal will close and nothing happened → if you click delete, the folder will be deleted.
      • If you hover over a file you will see both the download and trash icons → here you can either download or delete the file → if you click download, the file should download to your computer → if you click delete, a delete modal will appear and ask if you want to actually delete → if you click cancel the modal will close and nothing happened → if you click delete, the file will be deleted.
      • If you click one of the files in the table you will either see a preview of the file (if it’s allowed or you will see a modal says that the preview is not available and you can download the file.
    • Case 10
      • If you click into folders, you will see the breadcrumbs being created at the top → if you click on one of them, you will be taken to that folder and what’s inside of it.
      • Now the breadcrumbs are in the breadcrumb bar and the folder you are in is the title of the page.
  48. KOD-30241: Replatform - Create a Rule to Manage fg_new Filter Category
    • Tests
    • Case 1
      • Find a product assigned to fg_new_products that has no addedToNewFilterCategoryDate setting.
      • Run the script.
      • Verify the setting was created with today's date (yyyy-MM-dd).
      • Verify the product is still assigned to fg_new_products.
    • Case 2
      • Ensure a product in fg_new_products has addedToNewFilterCategoryDate set to a recent date (e.g. 1 month ago).
      • Run the script.
      • Verify the product is still assigned to fg_new_products and setting is unchanged.
    • Case 3
      • Set addedToNewFilterCategoryDate to a date older than 3 months (e.g. 2025-01-01) on a product in fg_new_products.
      • Run the script.
      • Verify the product is no longer assigned to fg_new_products.
      • Verify the addedToNewFilterCategoryDate setting was deleted.
  49. KOD-30242: List block not working properly
    • Regression Tests
    • Case 1
      • Ensure that existing CMS pages (page, page-small, page-medium, page-full) display without errors.
      • Ensure that list styles in page templates have not changed.
      • Ensure that the console displays no errors on all page types.
    • Tests
    • Case 1
      • Ensure that lists (ul/ol) display correctly on the blog page.
      • Ensure that lists (ul/ol) display correctly on the careers page.
      • Ensure that lists have the correct left padding (padding-left: 2rem).
      • Ensure that list items have the correct bottom padding (margin-bottom: 12px).
  50. KOD-30243: Port the Grid block to demo repo
    • Regression Tests
    • Case 1
      • Ensure existing CMS pages display without errors.
      • Ensure there are no errors in the console in the Gutenberg editor.
    • Tests
    • Case 1
      • Ensure that the "CM: Grid" block is available in the Gutenberg block list.
      • Ensure that multiple cells can be added to the Grid.
      • Ensure that Grid settings (columns, gap, row gap) are applied correctly for Desktop.
      • Ensure that Grid settings are applied correctly for Tablet (max-width: 1024px).
      • Ensure that Grid settings are applied correctly for Phone (max-width: 750px).
      • Ensure that Cell settings (grid-column, grid-row, order) work for all breakpoints.
      • Ensure that the background image in the cell displays correctly.
      • Ensure that the gradient in the cell displays correctly.
      • Ensure that the link (linkHref) in the cell works correctly.
  51. KOD-30244: AP Automation - New Invoice Format
  52. KOD-30245: Restrict Country Selection for Customers
    • Regression Tests
    • Case 1
      • Make sure on checkout, the locations page still looks the same.
      • And make sure for the delivery address, the full list of countries is still shown.
  53. KOD-30249: Set up Unit Conversion items to "Display to Customer" = "No"
  54. KOD-30257: UX - Use new V2 discrepancies endpoint when displaying order discrepancies
    • Regression Tests
    • Case 1
      • Enter the Operations Portal, and open the Orders page.
      • Find an order with discrepancies:
      • The grid row should display an icon with the number of discrepancies.
      • The icon color should be red if there are exceptions, amber if only warnings.
      • Open the order with discrepancies:
      • It should display icons for discrepancies with the corresponding colors and counters.
      • It should trigger a tooltip next to the fields when hovering.
  55. KOD-30263: CMS-Menu Homepage Edit
    • Tests
    • Case 1
      • Open the website.
      • Hover over any category in the navigation menu (e.g., Resources).
      • Hover over a menu item that has an arrow.
      • Verify that a submenu is displayed.
      • Verify menu items without submenus.
      • Ensure that menu items without a submenu do NOT display an arrow.
  56. KOD-30266: Add a form submitted trigger for custom rule interceptors
  57. KOD-30268: Fix styling on top bar when mega menu is open
    • Regression Tests
    • Case 1
      • Make sure the front page still looks the same - and the header hasn’t changed.
    • Case 2
      • Click around to different parts of the site and make sure pop ups still look the same as before.
    • Tests
    • Case 1
      • When you open the mega menu, make sure the top bar now stays the same color as what it was before the menu was opened.
    • Case 2
      • Make sure when the mega menu is open, the header is not overlaid (everything below the white on the header should have an overlay).
    • Case 3
      • Make sure clicking the different options in the mega menu still redirects to the correct place and the menu is closed and the overlay is no longer there.
    • Case 4
      • Now make the page smaller so the mobile menu is shown → search for something and notice the mega menu opens properly and the overlay only happens below the search bar.
  58. KOD-30271: ACH payment method at checkout
    • Regression Tests
    • Case 1
      • Make sure that step 3 is displayed correctly on the checkout page.
      • Make sure that the “Pay with Bank Account” option is displayed when ACH settings are enabled.
      • Ensure that the ACH form contains all fields: Bank Name, Account Name, Account Type, Account Number, Routing Number, Agree to ACH Terms checkbox.
    • Tests
    • Case 1
      • Ensure that a new required field, “Signature,” has been added to the “Pay with Bank Account” form.
      • Verify that the Signature field is displayed in handwritten font.
      • Verify that the form is not submitted if the Signature field is empty.
      • Verify that the ACH Agreement PDF is generated with a signature (check in Operations Portal → Companies Screen → find the company → Internal Files tab).
  59. KOD-30273: Kodaris - ACH payment method at checkout
    • Regression Tests
    • Case 1
      • Make sure that step 3 is displayed correctly on the checkout page.
      • Make sure that the “Pay with Bank Account” option is displayed when ACH settings are enabled.
      • Ensure that the ACH form contains all fields: Bank Name, Account Name, Account Type, Account Number, Routing Number, Agree to ACH Terms checkbox.
    • Tests
    • Case 1
      • Ensure that a new required field, “Signature,” has been added to the “Pay with Bank Account” form.
      • Verify that the Signature field is displayed in handwritten font.
      • Verify that the form is not submitted if the Signature field is empty.
      • Verify that the ACH Agreement PDF is generated with a signature (check in Operations Portal → Companies Screen → find the company → Internal Files tab).
  60. KOD-30272: Kodaris - Add SSO to customer side
    • Regression Tests
    • Case 1
      • Make sure you can still log into the site by both the sign in/log in page and by the panel in the header.
      • As well as if you are on a page that has a redirect, that it logs you in and redirects you back to that page.
    • Tests
    • Case 1
      • Make sure these 2 settings are enabled:
      • enableCustomerSignInWithGoogle
      • enableCustomerSignInWithMicrosoft
      • When logged out, on the login in page under the sign in button, you should see an or with 2 buttons, one for signing in with google and the other for microsoft
      • By clicking either of those buttons, it should sign you into the application.
    • Case 2
      • In the header, click the button that says Register or Sign in → under the forgot password, you should see or and then 2 buttons for signing in with google or microsoft.
      • By clicking either of those buttons, it should sign you into the application.
    • Case 3
      • Navigate to a different page on the site that will redirect you to the login in page with a redirect in the url.
      • Click the sign in with Google/Microsoft button and it should log you in and redirect you to that page.
      • Do this for both the login page and the panel.
    • Case 4
      • Navigate to a different page that doesn’t require you to log in.
      • Click the Register or Sign in button → Click the sign in with Google/Microsoft button and it should take you to the home page (same as how it is now with regular log in).
    • Case 5
      • Now turn off one of those settings →
      • if you turn off enableCustomerSignInWithGoogle , you should not see the sign in with google button.
      • If you turn off enableCustomerSignInWithMicrosoft , you should not see the sign in with Microsoft button.
    • Case 6
      • Now turn off both of those settings → you should not see either button and the page and panel should look the same as it was before.
  61. KOD-30274: Kodaris - Update Pricing Page on Website 2
    • Regression Tests
    • Case 1
      • Ensure that the section “How is AI Product Search priced?” appears correctly.
    • Tests
    • Case 1
      • Ensure that the text has been changed to “per thousand input tokens” instead of “per input token”.
  62. KOD-30276: Copy descrip1 and descrip2 to Settings
  63. KOD-30278: Make the primaryKey and secondaryKey type string
    • Regression Tests
    • Case 1
      • Go to the “Order Notes” screen in the operations portal.
      • Try to filter a previously existent note which has a number as primary key by the primary key.
      • Expected :
      • You should be able to find the note. However, UI will show that primary key/secondary key are invalid because they must be numbers. A UX ticket will be created to address this issue.
    • Case 2
      • Go to the “Order Notes” screen in the operations portal.
      • Try to filter a previously existent note which has a number as a secondary key by the secondary key.
      • Expected :
      • You should be able to find the note. However, UI will show that primary key/secondary key are invalid because they must be numbers. A UX ticket will be created to address this issue.
    • Tests
    • Case 1
      • Go to the swagger (/services) and click on the “System API”.
      • Go to the Order Note API.
      • Create a new Order Note using the POST /api/system/orderNote . This order note must have a primary key and a secondary key as strings. Example of a payload:
      • {
      • "primarykey": "testing123",
      • "secondarykey": "testing123",
      • "code": "testing123",
      • "notestype": "testing123",
      • "externalID": "testing123"
      • }
      • Expected :
      • You should be able to create the note and the endpoint must return status code = 200.
      • Case 2
      • Go to the swagger (/services) and click on the “System API”.
      • Go to the Order Note API.
      • Search the order note that you created in the test case 1 using the POST /api/system/orderNote/list . Example of a payload:
      • {
      • "page": 0,
      • "size": 10,
      • "filterFields": [
      • {
      • "name": "primarykey",
      • "value": "test",
      • "operation": "CONTAINS"
      • }
      • ]
      • }
      • Expected :
      • You should be able to find the note. However, UI will show that primary key/secondary key are invalid because they must be numbers. A UX ticket will be created to address this issue.
  64. KOD-30279: Update Company Address Mappings
  65. KOD-30282: Implementation - Spin Up System
  66. KOD-30283: Implementation - Install Applications
  67. KOD-30284: Custom Export App - Navigation Fix
    • Regression Tests
    • Case 1
      • Sidebar navigation within Import/Export.
      • Navigate to the Import/Export app.
      • Click "Exporters" in the sidebar under the Export group.
      • Verify the Exporters page loads and the nav item is highlighted.
      • Click "Export History" in the sidebar under the Export group.
      • Verify the Export History page loads and the nav item is highlighted.
    • Case 2
      • Browser back/forward navigation.
      • Navigate to the Import/Export app (lands on Exporters).
      • Click "Export History" in the sidebar.
      • Verify the Export History page loads.
      • Click the browser back button.
      • Verify the Exporters page loads.
      • Click the browser forward button.
      • Verify the Export History page loads again.
    • Tests
    • Case 1
      • Cross-app navigation from Import/Export via app bar.
      • Navigate to the Import/Export app from the global app bar.
      • Click the apps grid icon in the global app bar to open the applications menu.
      • Click on a different app (e.g., "Document Automation Studio") from the menu.
      • Verify the browser navigates to the selected app without any console errors.
      • Verify the selected app loads and renders correctly.
    • Case 2
      • Base URL redirects to the Exporters page.
      • Navigate directly to `/operations/app/import-export/` (with trailing slash).
      • Verify the URL updates to `/operations/app/import-export/exporters`.
      • Verify the Exporters page renders correctly.
      • Navigate directly to `/operations/app/import-export` (without trailing slash).
      • Verify the URL updates to `/operations/app/import-export/exporters`.
  68. KOD-30287: Shipping Methods Zone update
    • Regression Tests
    • Case 1
      • Check that the Shipping Method, Shipping Method Detail, and Postal Codes screens still work correctly without issues.
    • Tests
    • Case 1
      • A new field on Zone should now be available on all three screens.
      • You should be able to add, update, delete, filter and sort when applicable.
  69. KOD-30288: Hide Retail Price Catalog
    • Regression Tests
    • Case 1
      • Make sure the catalogs page still loads properly.
    • Case 2
      • Make sure products that are in the retail price catalog still show the correct value on both the product list and product details view.
    • Tests
    • Case 1
      • On the catalogs screen, make sure you can no longer see the Retail Price Catalog in the list.
  70. KOD-30289: Implementation - PIM
  71. KOD-30291: Implementation - Addons
  72. KOD-30292: Translations tweaks
  73. KOD-30295: Remove cookie policy
    • Regression Tests
    • Case 1
      • Check that the page still loads fine.
    • Tests
    • Case 1
      • Clear the cookies and check that you don’t see cookies banners on site.
  74. KOD-30297: Implementation
  75. KOD-30299: Implementation
  76. KOD-30301: Implementation
  77. KOD-30302: Update the primaryKey and secondaryKey on Order Notes screen to be strings
    • Regression Tests
    • Case 1
      • Log in to the operations portal.
      • Navigate to the Order Notes screen.
      • Check that the page still loads, you can add/remove fields, create new records or update records.
    • Case 2
      • Log in to the operations portal.
      • Navigate to the Order Notes screen.
      • Choose any note and navigate to the details page.
      • Check that the details page still loads fine.
    • Tests
    • Case 1
      • Log in to the operations portal.
      • Navigate to the Order Notes screen.
      • For Primary and Secondary Key fields, you can put any word, not only digits.
    • Case 2
      • Log in to the operations portal.
      • Navigate to the Order Notes screen.
      • Choose any note and navigate to the details page.
      • Verify that you can see the new field Secondary Key.
    • Case 3
      • Log in to the operations portal.
      • Navigate to the Order Notes screen.
      • Choose any note and navigate to the details page.
      • For Primary and Secondary Key fields, you can put any word, not only digits.
  78. KOD-30305: Credit App update
    • Tests
    • Case 1
      • When first going to the credit app and selecting Account Type as Credit Account, when you go to add an owner, the fields should not be greyed out anymore.
    • Case 2
      • Make sure the authorized officer signature text gets saved as a custom field on the credit application.
      • Once the credit app is completed → find the company → developer fields → you’ll see authorizedOfficerSignature as a field with the name printed there.
  79. KOD-30307: Add ability to set price book file name
  80. KOD-30310: Update Document Automation Product Convention
  81. KOD-30314: Replatform - Cart > QTY break products> changing quantities to meet different break levels doesn't change the unit price displayed
    • Regression Tests
    • Case 1
      • Add any product to cart.
      • Navigate to the Cart page.
      • Verify cart item displays:
      • Product image
      • Product name
      • Part number
      • Unit price
      • Total price for the item
      • Quantity selector with +/- buttons
      • Note the unit price and total
      • Change quantity for product using + and - buttons
      • Verify:
      • Total calculates correctly.
    • Tests
    • Case 1
      • Find a product with quantity-based pricing:
      • Open product detail page.
      • Look for a pricing table showing different prices for different quantities.
      • (e.g., Your Price: $5.90 each, Quantity 12: Price / each $5.25)
      • Note the quantity needed for lower price and what that price is
      • Add this product to cart.
      • Navigate to the Cart page.
      • Verify:
      • Unit price shows the regular price.
      • Change quantity but keep it below the amount needed for a lower price.
      • Verify:
      • Unit price still shows regular price.
      • The total is calculated correctly.
      • Increase quantity to reach the amount for lower price.
      • Verify:
      • Unit price changed to the lower price.
      • This matches the price shown in the pricing table on the product page.
      • The total is calculated with the new price.
      • Decrease quantity below the amount for lower price.
      • Verify:
      • Unit price returned to regular price.
      • Total recalculated with regular price.
  82. KOD-30315: Replatform - Configurator Products QTY Breaks Issue
    • Regression Tests
    • Case 1
      • Open the commerce site.
      • Open a product page with no price breaks:
      • Everything should work normally.
    • Tests
    • Case 1
      • Open the commerce site.
      • Open a product page with price breaks:
      • Select an option with price breaks: it should show the price table.
      • Select an option with no price breaks: it should hide the price table.
  83. KOD-30319: Account Automation Tweaks
    • Regression Tests
    • Case 1
      • Ensure that the company is successfully saved in the ERP without any errors.
    • Tests
    • Case 1
      • Ensure that the company notes field and addonnum #8 = 50 are saved in CSD.
  84. KOD-30320: Implementation - Import Tweaks
  85. KOD-30330: Adding link to page in footer
    • Tests
    • Case 1
      • Open the website.
      • Scroll to the footer.
      • Verify the "Terms Conditions of Purchase" link is present.
      • Click the link.
      • Verify that the redirect works and the correct page opens.
      • Verify mobile version.
      • Open the website on a mobile device or mobile view.
      • Ensure the link is present and the redirect works correctly.
  86. KOD-30342: Update Document Automation Studio to use new analysis naming
  87. KOD-30349: Company Custom Fields - Add Multi-Select Dropdown Functionality
    • Regression Tests
    • Case 1
      • Go to CRM → Companies. Select a random company for a test. Open the Custom Fields tab.
      • Check that all the fields work and look good. Try to change their values, reload the page and check that it’s saving properly.
    • Tests
    • Case 1
      • Go to System → Settings → integrationIndexedCompanyFields . Add new custom field using next config:
      • {
      • "settingCode": "multipleSelectTest",
      • "settingName": "Multiple Select TEST",
      • "options": ["a", "b", "c"],
      • "optionsMultiple": true,
      • "isIndexed": true
      • }
      • Go to CRM → Companies. Open a random company for test, Custom Fields tab.
      • Check that the new field exists.
      • Try to select a few options from select. Reload the page, check that the value was stored properly.
      • Try to do it a few times, and also set different values. Check that everything works properly.
  88. KOD-30357: Spelling on Negative payment error
  89. KOD-30358: Website Top Bar
    • Regression Tests
    • Case 1
      • Top bar buttons remain functional for logged-in users.
      • Log in.
      • Navigate to any page where the header is visible.
      • Click the company selector button in the top bar.
      • Verify the company selection interaction opens as expected.
      • Click the delivery address button in the top bar.
      • Verify the delivery address selection interaction opens as expected.
    • Tests
    • Case 1
      • Top bar is hidden for logged-out users.
      • Open the site in a browser while logged out.
      • Verify that the top bar (company selector, delivery address) is not visible above the main header.
      • Verify there is no empty space or placeholder where the top bar would normally appear.
    • Case 2
      • Top bar displays with gray background for logged-in users.
      • Log in.
      • Verify the top bar is visible above the main header with a light gray background (#eee).
      • Verify the company selector button is displayed if the account has a selected company.
      • Verify the delivery address button (with geo pin icon) is displayed.
      • Verify there is no colored border line (previously a green color bar) below the top bar.
  90. KOD-30369: Update billing code and model for AI PIM
  91. KOD-30372: Switch sites from passwords to tokens