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
February 12, 2026 release notes
Tickets
- KOD-29217: Dealer - Order Flow
- Tests
- Case 1
- Ensure that the user script (generateCNHCheckoutCartFile) is working correctly, namely that a CSV file is generated as shown in the example.
- Verify that the file is created on the orders screen, in the customer files tab.
- Ensure that the file is successfully sent to the email address.
- KOD-29307: Implement non stock products to CSD on order insert
- KOD-29386: Product Search Updates for Catalogs
- Case 1
- Having the new setting useFullTextSearchOnCatalogs disabled.
- On the catalogs in the site, make sure you can search for products within a catalog and you are getting the results as expected. Basically, the search is doing a ‘contain’ for product.code, product.name and product.manufacturerCode. This means if there is a product with code ‘ABCDEF’ and you search for ‘ABC’ it should find it.
- The same if you find it for CDE.
- Tests
- Case 1
- Having the useFullTextSearchOnCatalogs now when you search for products within catalogs it will implement a full index search.
- Their products have various names like electrical maintenance tape , etc.
- Before it was trying to do a ‘CONTAIN’ search, so if you searched for tape you could find a lot of records because there were many ‘electrical maintenance tape’ products. But then if you searched by ‘electrical tape’ the search didn’t find those.
- Now, it will try to do a full text search against particular fields:
- code , seoCode, name, description, keywords, manufacturerProductCode
- So if any of those fields contains any word like tape, maintenance or electrical, it should appear.
- See the video to understand the results better.
- Case 2
- 2 new endpoints available
- /api/account/companyProductCategory/{companyProductCategoryID}/listProductsV
- Which is supposed to replace this one:
- /api/account/companyProductCategory/{companyProductCategoryID}/listProducts
- and /api/account/customerProductCategory/{companyProductCategoryID}/listProductsV2
- which is supposed to replace: /api/account/customerProductCategory/{companyProductCategoryID}/listProducts
- KOD-29560: Add UX for tenants and tenant settings
- Tests
- Case 1
- Log in to the Operations Portal.
- Ensure the Tenant screen is accessible via the main menu.
- Navigate to the Tenant screen.
- Verify Tenant CRUD operations.
- Create a new tenant.
- Edit the newly created tenant (e.g., change name or other fields).
- Delete the newly created tenant.
- Verify Tenant detail view.
- Open the detail view for any existing tenant.
- Verify the presence of the following tabs:
- General Info
- Details
- Review the following sections:
- Developer Fields
- Development
- Verify Developer Fields functionality
- Create a new Developer Field setting
- Edit the newly created setting
- Delete the newly created setting
- Verify Development section
- Verify that all available fields from the Tenant response are displayed correctly.
- KOD-29618: Price Book Downloads
- KOD-29621: Export for Quote Non-Stock Items
- Tests
- Case 1
- Use sample payload for testing.
- use submitEvent endpoint in Business Event in swagger,
- Expected:
- An internal file gets generated that includes every line item with code NONSTOCK.
- KOD-29625: Create price engine and logic integration
- KOD-29631: Change forgot password contact info
- Tests
- Case 1
- Verify Email Is Displayed Instead of Phone Number.
- Navigate to the website.
- Click on the "Forgot password" option.
- Verify the text is displayed as:
- "Still having trouble? Give us a call at {email}
- Ensure that an email address is displayed instead of a phone number.
- KOD-29676: Implementation - Install Applications
- KOD-29684: Kodaris - Sync Orders
- KOD-29702: Implementation - Order / Invoice Documents
- Regression Tests
- Case 1
- Check that the order templates still generate and look good without errors.
- Order PDF:
- Go to the Operations Portal.
- Go to the details screen of an Order.
- In the header menu, click the Generate PDF option.
- After being redirected to the Internal Files screen, open the PDF.
- It should look good and not have any errors.
- Order Email:
- On the same order in the header menu, click the Generate Email option.
- In the popup, use the pre-selected template, and generate the email.
- Check that it looks good without issues or errors.
- Order HTML:
- Login on the customer side of the website.
- Go to the customer portal > Orders screen and go to the details page for an order.
- Check that the template looks good without issues or errors.
- Also, for the HTML template, place an order on the website and check that the template on the confirmation screen looks good without errors.
- Tests
- Case 1
- Do the same steps as the regression tests, but for each template, check that it matches the example template for orders that is in the ticket description.
- Check that:
- All labels and messaging match the example template.
- Data is correct (especially when comparing Kodaris templates in their example order to the CSD template in ticket description).
- Also, on the HTML template, check that it is mobile responsive.
- KOD-29732: V3 DDA testing
- Regression Tests
- Case 1
- In the operations portal, you should still be able to generate an order PDF.
- And if the display proof of delivery is not, the PDF should remain the same.
- Case 2
- On a quote, you should still be able to generate a PDF.
- Tests
- Case 1
- If an order has a POD signature, when you generate the order PDF (and select yes to show the proof of delivery), you should now see the signature displayed along with the created date and geo coordinates.
- KOD-29737: Customer login first time, displaying default unknown location
- KOD-29744: Implementation - Taxes
- KOD-29749: Implementation - Install Applications
- KOD-29755: Brands not in Alphabetical Order
- Case 1
- Make sure the brands are displayed in the shop.
- Make sure sorting works when a brand is selected.
- Tests
- Case 1
- Ensure the brands are listed in alphabetical order.
- KOD-29765: Add UX for adding assignees to intranet page and intranet page drafts
- Case 1
- In the operations portal, make sure you can still go to the Internal FAQ details page and it still loads.
- Make sure you can still go to the Internal FAQ draft details page and it still loads.
- Tests
- Case 1
- On the Internal FAQ details page, notice the new section for Assignees.
- Click the Assignment Type dropdown and pick a type → now type in an assignee name and pick one → notice both name and type are added.
- You should not be able to add the same assignee twice.
- Now click the X and the assignee/type should be removed from the page.
- Case 2
- On the Internal FAQ Draft details page, notice the new section for Assignees.
- Click the Assignment Type dropdown and pick a type → now type in an assignee name and pick one → notice both name and type are added.
- You should not be able to add the same assignee twice.
- Now click the X and the assignee/type should be removed from the page.
- Case 3
- Also notice in the Internal FAQ details page, that there is now a header for Details and General Info (also Assignees but that was added with the new code) - to match how it is on Internal FAQ drafts and FAQs.
- KOD-29768: Implementation - Taxes - Test Feedback
- KOD-29777: Update UX for product code with slashes issue
- Regression Tests
- Case 1
- Make sure the company catalogs, customer catalogs, and product list pages still load properly.
- Tests
- Case 1
- Go to a company catalog → Make sure you can drag and drop a product and you don’t get an error.
- Now make sure you find a product with a / in the product code, make sure you can drag and drop that product as well.
- Test for both grid view and list view.
- Case 2
- In a company catalog, make sure you can delete a product.
- Now make sure you can delete a product with a slash in the product code.
- Test for both grid view and list view.
- Case 3
- In a customer catalog, make sure you can delete a product.
- Now make sure you can delete a product with a slash in the product code.
- Test for both grid view and list view.
- Case 4
- Go to any product list view, make sure you can add a product to a catalog.
- Now make sure you can add a product that has a slash in the code.
- (Can only add products while in list or grid view).
- KOD-29782: Add the ability to search open search
- Tests
- Case 1
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Go to Swagger and call /api/system/opensearch/sql with request body:
- {"query": "SELECT * FROM orders LIMIT 10"}
- Make sure it returns results from OpenSearch.
- Case 2
- Empty query:
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Go to Swagger and call /api/system/opensearch/sql with request body:
- {"query": ""}
- Make sure it returns error: "SQL query cannot be empty"
- Case 3
- DELETE blocked:
- Log into the operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql with request body:
- {"query": "DELETE FROM orders WHERE orderID = 1"}
- Make sure it returns an error: "Only SELECT queries are allowed".
- Case 4
- DROP blocked:
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql with request body:
- {"query": "DROP TABLE orders"}
- Make sure it returns an error: "Only SELECT queries are allowed"
- Case 5
- Update blocked:
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql with request body:
- {"query": "UPDATE orders SET status = 'CANCELLED'"}
- Make sure it returns error: "Only SELECT queries are allowed"
- Case 6
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql with request body:
- {"query": "SELEC * FORM orders"}
- Make sure it returns OpenSearch error message.
- Case 7
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql with request body:
- {"query": "SELECT * FROM nonexistent"}
- Make sure it returns OpenSearch error about missing index.
- Case 8
- Log out from the Operations Portal.
- Call /api/system/opensearch/sql as non-admin user with request body:
- {"query": "SELECT * FROM orders LIMIT 10"}
- Make sure it returns an error.
- Case 9
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql/explain with request body:
- {"query": "SELECT orderID, status FROM orders WHERE status = 'Received'"}
- Make sure it returns the Query DSL translation (OpenSearch query plan)
- Case 10
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql with request body:
- {"query": "SELECT orderID, status FROM orders LIMIT 5", "format": "csv"}
- Make sure it returns response with data field containing CSV string (e.g., "data": "orderID,status\n120,Web Entered\n...")
- Case 11
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql with request body:
- {"query": "SELECT * FROM orders", "format": "jdbc", "fetchSize": 5}
- Make sure it returns only 5 rows in data rows.
- Case 12
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql with request body:
- {"query": "SELECT orderID, status FROM orders",
- "filter": {"match": {"status":"Received"}}}
- Make sure it returns only orders with status = "Received".
- Case 13
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql/export?fileName=orders.csv with request body:
- {"query": "SELECT orderID, status FROM orders LIMIT 100"}
- Make sure the browser downloads a file named orders.csv with CSV content.
- Case 14
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql with request body:
- {"query": "SELECT orderID, status FROM orders LIMIT 5", "format": "raw"}
- Make sure it returns a response with a data field containing pipe-delimited string.
- Case 15
- Log into the Operations Portal with 'administrator' / 'superuser' role.
- Call /api/system/opensearch/sql with request body:
- {"query": "SELECT * FROM orders LIMIT 5", "format": "invalid"}
- Make sure it returns an error: "Invalid format. Allowed values: json, jdbc, csv, raw".
- KOD-29797: Implementation - Install Applications
- KOD-29816: Customer Portal - Design Updates
- KOD-29817: Kodaris Operations Portal - Error on Every Order - Cannot Use
- KOD-29827: Product Configurator - Display part number according to selected variant
- Case 1
- Check that the regular product details page still looks good.
- Case 2
- Check that the configurator product details page still looks good.
- Case 3
- Check that you can add a regular/configurator product to the cart from the details page.
- Tests
- Case 1
- Check that when you open the configurator product (as an example in ticket description) and choose any available variant, product code gets updated.
- KOD-29828: Implementation - ICSW Sync
- KOD-29831: AP - Install Existing Vendor Mappings
- KOD-29834: Order confirmation Email improvements
- Regression Tests
- Case 1
- Make sure you can still generate an order email and an order with status not equal to Received should have not been changed.
- Tests
- Case 1
- For an order that has status ‘Received’ and does not have trend compiled settings, generate an order email → notice the product images are not getting cut off any more.
- KOD-29848: Implement HTML on SpecificationData.csv Export
- KOD-29849: Required Attribute Assignment screen - Add UX for filtering for blank/null values across columns
- Regression Tests
- Case 1
- Ensure that the “Required Attribute Assignment” grid looks and functions correctly.
- Tests
- Case 1
- Ensure that the filter icon appears next to the fg_* columns.
- Ensure that clicking on the filter opens a menu with two options:
- Empty (sends IS_BLANK)
- Not empty (sends IS_NOT_BLANK)
- Ensure that the empty/not empty filter is functioning correctly.
- KOD-29852: Issue with Related product files without path
- Regression Tests
- Case 1
- Preconditions:
- Regular product exists (productDisplayType NOT "Configurator").
- Product has multiple images attached (1 primary + 1 secondary).
- Product has NO variants/related products.
- Navigate to the regular product page.
- Observe the product image carousel.
- Verify all product images are displayed.
- Navigate through the carousel.
- Check that no console errors appear.
- Expected Result:
- Carousel displays all product images (primary + secondary).
- No duplicate images appear.
- No JavaScript errors in the console.
- No changes in behavior compared to before the configurator inheritance feature.
- Case 2
- Variant without own images inherits all parent images.
- Preconditions:
- Configurator product exists with 3 images (1 primary + 2 secondary).
- Variant product exists with NO images/files attached.
- Variant is related to configurator as relatedType: "ConfiguratorVariant"
- Steps:
- Navigate to the configurator variant product page (e.g., /CouchTestMediumGreen).
- Observe the image carousel.
- Expected Result:
- Carousel displays 3 images (all inherited from the parent configurator product).
- Images match the parent product's primary + secondary images.
- No duplicate images appear.
- Carousel navigation works correctly.
- Case 3
- Variant with own images shows ONLY own images.
- Preconditions:
- Configurator product exists with 3 images.
- Variant product exists with 2 own images (one as primary and second one as secondary).
- Variant is related to the configurator as relatedType: "ConfiguratorVariant".
- Navigate to the configurator variant product page (e.g., /CouchTestMediumRed).
- Observe the image carousel.
- Expected Result:
- Carousel displays 2 images total (ONLY own images, NO inherited).
- Parent images are NOT displayed.
- Tests
- Case 1
- Preconditions:
- Upload Customer files to the products.
- Navigate to the Customer Files screen.
- Click “File” > “Import” select one of the available importers (for example - Product Files: Create Update).
- Import file that is available by this link .
- In productCode column type code of the product variant or product configurator.
- Confirm Images are displayed on the Public Files tab under Product in the operations portal.
- Navigate to the commerce and set configuration to match the configurator valariat attributes (dropdown values).
- Confirm only one image is loaded.
- Add path to one file.
- Confirm that file is displayed on the page.
- KOD-29854: Kodaris - Can't navigate to Custom Fields on Companies > Ticket > Details screen
- Case 1
- Make sure you can still navigate to Companies → Tickets → Ticket Details.
- Tests
- Case 1
- Navigate to Companies → Tickets → Ticket Details → now click on the Custom Fields tab → you should be taken to that page now (and can only access it if you have one of the following role: 'administrator', 'superuser', 'ticketSettingView', 'ticketSettingEdit'.
- (In order to even access the companies screen in the first place, make sure you also have one of the following permissions: 'administrator', 'superuser', 'companyView', 'crmCompanyView', 'companyEdit', 'crmCompanyEdit' ).
- If you don’t have one of those roles, you should not be able to access the page and get an error saying to contact support.
- KOD-29856: A standalone refund (Credit) Transaction
- KOD-29863: Inconsistent email validation between login screen and session expiration popup
- Case 1
- Navigate to the login page.
- Locate the email input field.
- Click the email input field.
- Enter text.
- The email input field is visible and enabled.
- Text is entered and displayed correctly.
- Tests
- Case 1
- Navigate to the login page.
- Enter an invalid email.
- Click Sign In .
- Enter a valid email.
- Click Sign In .
- Confirm:
- An email validation error message is displayed for an invalid email.
- Sign In works correctly with a valid email.
- KOD-29867: Add “In The Box” Tab to Product Pages
- Case 1
- Check that the product detail page still looks good for guest and logged in users.
- Case 2
- Check that this item section still looks good and you can navigate between tabs for guest and logged in users.
- Tests
- Case 1
- Check that you can see new section ‘In the Box’ when product have populated field header in operations portal (operations portal → products screen → product details page → additional-content)
- KOD-29877: New content module block - Additional updates
- Case 1
- Ensure that CM: Slider 3 functions and appears correctly.
- Ensure that the color can be set for the arrows.
- Tests
- Case 1
- Ensure that the font weight for the title is regular (400).
- Ensure that the title has the letter Case - all caps.
- Ensure that the arrow has a background color of white.
- Ensure that the arrow and border colors are #008859.
- KOD-29881: SEO - H2 Tags in Header
- Case 1
- Make sure the site still loads properly and the header/mobile header still looks the same.
- Navigate to other pages besides the home page and make sure the mobile header still looks the same.
- Case 2
- Make sure the import from file modal (quick order → import from file) still looks the same as before.
- Tests
- Case 1
- Make sure that there are no h2 or h3 tags above an h1 tag.
- Right click and select view page source → search for h1 and notice the line number → now search for h2 and h3 and notice that they are all below h1.
- KOD-29888: Add user's selected site language to the Post Order Survey
- Case 1
- When submitting a post order survey - the user’s selected site language has to be also passed to the created ticket.
- KOD-29890: Transaction update
- KOD-29895: Kodaris - Rules Engine (Automation) - Remove from the Operations Portal
- Regression Tests
- Case 1
- Ensure that the system menu opens and all other items are clickable.
- Tests
- Case 1
- Ensure that the “Automation” item is not present in the system menu.
- Ensure that a direct transition to /automation redirects to the dashboard.
- KOD-29912: Turn on Search Debugger tool
- Case 1
- Make sure the search functionality is working the same as before for both a logged in and logged out customer.
- Case 2
- Make sure the categories screen is working the same as before.
- Tests
- Case 1
- Make sure your employee has the searchDebug role.
- Log into the operations portal → now go to the commerce site → search for a product → notice the search score at the bottom of the tile (only on grid view) → also notice the inspect button.
- Case 2
- Continuing from case 1 → click the inspect button → notice a side panel pops up → this panel should have a highlights tab, explain tab, and a debug tab → click into each one to make sure they load → now click on the actions button → notice 3 options in the dropdown → click on each of them → ‘Open product in operations portal’ should take you to the product in the ops portal in a new tab → ‘Open search tools’ should take you to the search screen in the ops portal in a new tab →'Open search documentation' should take you to the documentation on using the search debugger → now click the X and it should close the inspector.
- Case 3
- Now go to the list view and notice that the search score is not present.
- Case 4
- Now log into the commerce site → search for a product → notice you do not see the search score/inspector anymore.
- KOD-29946: Publish Summit Agenda
- KOD-29951: Add missing fields to the Terminal Data Grid and Detail tab
- Case 1
- On the operations portal navigate to the Terminals screen.
- In the grid edit some values.
- Confirm values are saved.
- Add/remove some columns.
- Confirm they are displayed properly.
- Apply sorts and filters.
- Verify they are working as expected.
- Case 2
- On the operations portal navigate to the Terminals screen.
- Select any terminal and navigate to its detail page.
- Confirm page loaded properly.
- Edit some fields.
- Confirm changes are saved.
- Change “Type” to “virtual” in the “General Info” section
- Confirm a new tab appeared.
- Navigate to this tab and confirm the page loaded properly.
- Tests
- Case 1
- On the operations portal navigate to the Terminals screen.
- Open columns choose and select:
- Receipt Email Subject.
- Receipt Email Template Code.
- Receipt Page Template Code.
- Confirm those columns added properly.
- Modify those columns.
- Confirm:
- Receipt Email Subject is a free-hand input.
- Receipt Email Template Code and Receipt Page Template Code are autocompletes.
- Refresh the grid and refresh the page.
- Confirm changes are saved.
- Case 2
- On the operations portal navigate to the terminals screen.
- Add columns from the feature test 1.
- Navigate to the terminal’s detail page.
- Scroll to the “Other Info” section.
- Confirm three new fields appear at the bottom of this section.
- Confirm values are the same as on the grid view for respective columns.
- Modify those fields.
- Confirm:
- Receipt Email Subject is a free-hand input
- Receipt Email Template Code and Receipt Page Template Code are autocompletes.
- Refresh the page.
- Confirm changes are saved.
- Go back to the grid page.
- Verify changes are reflected on the grid.
- Case 3
- Assign only the terminalEdit role to your employee.
- Navigate to the Terminals screen.
- Verify that for template code columns there is no error while updating those cells.
- Navigate to the detail page.
- Confirm template code fields does not throw any permission error.
- KOD-29952: Create custom templates