The Operations Portal now includes a dedicated Roles column in the Employees screen, providing direct access to employee role information from the main grid view. Users can enable this column through the column selector, which displays all assigned roles for each employee in a comma-separated format.
This enhancement streamlines role management workflows by eliminating the need to open individual employee detail pages to view role assignments. The Roles column is available in both the standard grid view (where it can be toggled on/off) and the Data tab (where it appears by default), giving administrators flexible options for accessing this information.
The new column integration allows for quicker role audits and administrative oversight, helping teams efficiently manage employee permissions and responsibilities directly from the main employees interface.
This feature is now available in the Operations Portal. For a detailed walkthrough of the functionality, refer to the accompanying video demonstration.
https://youtu.be/NJr_3IgEDew
Tickets
21228: Configure - Download Lockbox File per Site in Multi-Site Mode
37807: Configure - Add Opportunities for a Company
KOD-28655: Pricing Issue - ARSPT record
41771: Configure - PIM - Bulk Import Additional Images and Resource Files by URL
43200: Configure - Assign Territory Code to a Company
43201: Configure - Assign and Restrict Employees to Sales Territories
KOD-29088: Upload File Functionality on Order Templates (Catalogs)
Tests
The testing can be done using UI if ready or the endpoint /api/account/companyProductCategory/
{companyProductCategoryID}/upload The files for testing can be taken using export from an already existing category.
The setting catalogFromCategoryMaxProducts (default 1000) can be decreased for testing (mainly for Upload exceeding catalog capacity ). For most tests using small files is OK, but it would be nice to have more than 500 rows in at least one file (it can be duplicates, but some unique product codes should be present in the end ) so that more that a single batch were used for import (max batch size=500).
A user should have one of these roles 'companyAdmin', 'companyCatalogEdit' .
Upload with valid CSV - Products are added (check in Company Product Categories), duplicates skipped, counts correct
Upload with invalid product codes - Missing products reported in missingDependencies , no crash
Upload to restricted catalog - Should be rejected.
Upload to reserved category code - Should be rejected.
Upload with TSV - Tab-separated file works correctly.
Upload with unsupported file type - Returns proper error.
Upload empty file - Handles gracefully (throws before processing).
Upload file without productCode column - Returns proper error (throws before processing).
Upload with duplicate rows in the same file - Only one record created per product.
Upload with extra columns (e.g., savedQuantityToOrder ) - Values mapped correctly to entity.
Upload with invalid extra column values - Warning reported, product still created.
Upload exceeding catalog capacity - Processing stops, partial results returned with correct counts (max count of products in a catalog = settings -> catalogFromCategoryMaxProducts ).
Using a non-existing product category - Returns proper error.
KOD-29290: Salesforce integration configuration
KOD-29416: OA: Add PO Required Exception Setting
KOD-29910: Placed By Column Drop Down length issue
Regression Tests
Case 1
Make sure the search grids in the operations portal still load correctly.
Case 2
Make sure for columns in the grid that are only filterable still function the same when you go to search on the column.
Tests
Case 1
For columns that are facetable and filterable, when you go to search on the column you will now see two different options - counts/buckets and filter.
Case 2
On the counts/buckets side, you should be able to search and it shows you the facets that contain that value, not case sensitive as well as the count associated to it of how many rows.
Click one of the values and the items in the grid should update accordingly.
If you have values typed into the search bar, you will see an x to clear the search which should bring back all the facets - with the one you checked still checked.
If the value you searched for was not in the top 100 values, when you clear the search, you will see that checked facet at the bottom of the list.
Case 3
Now click the filter box - if you have facets checked, you will see them listed with the IN filter.
Here you can change the type of filtering you want to do - this should act like how the filtering worked before on columns that were filterable only (ie: type a value with Contains, then switch to Does Not Contain and the value should be preserved, but if you switch to IN or some other one, then the value is cleared).
Case 4
Now click back to the counts/buckets tab - if you had any other type of filtering selected besides the IN, the filtering will clear and you should see the facet list with nothing checked.
The filtering from the filter tab will still be there, but once you click on a checkbox, the filtering will update to what you selected.
If you had values in the IN filter and switched back to the counts/buckets tab, that value should be checked in the list and the grid should still be filtered.
Case 5
For a column that is facetable and not filterable, you should only see the counts/buckets column and not the filters column.
KOD-29924: Phase Two "Untender" Orders
KOD-30056: Kodaris - Support Fraud Scoring for Customer Portal
Regression Tests
Case 1
Objective: Verify payments still work when fraud checks are disabled.
Add a payment method.
Pay an invoice.
Make a payment on account.
Tests
Case 1
Objective: Verify fraud check executes and FraudData record is created when adding a company payment method.
KOD-30175: Fix Special Cost Unit Handling in AP Automation BOD Processing
KOD-30178: Move integration, punchout, CMS server side endpoints to separate serverside apis
KOD-30214: Services - Add Products Screens
KOD-30366: Web Invoices - Code listed in payments term box and missing box for net due by date
Tests
Case 1: Verify Template Payment Date and Payment Terms
Open any order.
Verify existing generated files.
If available, open an existing Internal File or Customer File.
Check values displayed in Payment Date and Payment Terms.
Generate a new file.
Generate a new template file for the order.
Verify Payment Terms.
Ensure description is displayed instead of the terms code.
If description is missing, verify the terms code is displayed.
Verify Payment Date.
Open Developer Fields.
Check that dueDate is returned.
Verify Payment Date in the template matches the returned dueDate value.
KOD-30422: Send form information
KOD-30474: Send customer data
KOD-30515: Configuration Tab
Regression Tests
Case 1
Navigate to the customer portal.
Verify that the left nav panel still loads fine and you can click on any available option.
Tests
Case 1
Login to the operations portal.
Navigate to the settings screen and find setting customerTicketsEnabled.
Turn off this setting (set value to 0).
Navigate to the customer portal.
Verify that you don’t see the Configuration option on the left nav bar.
Repeat steps 1-3 but instead of turning off setting, you should turn on this setting.
Repeat step 4.
Verify that you do see the Configuration option on the left nav bar.
KOD-30542: Return to Gift Card Process
KOD-30597: Support Second Cash Account setup for consumer registration flow
KOD-30605: Infor CSD - Gift card updates
KOD-30617: Products Operation app
57983: Configure - Filter by follow up date from Opportunities search grid
KOD-30703: Kodaris - Quote/Lead/Order Custom Fields Follow-up - Ability to Update on Grids
KOD-30728: Discounts being applied to credits
KOD-30730: Add calculate endpoint for vendor invoices
Tests
Case 1 - Calculate totals after editing tax
Open a vendor invoice that has line items you can use for testing.
Note the current total.
Edit the tax field to a different value and save.
Confirm the total did not change after saving.
Note ID of your vendor invoice, go to Swagger and call POST /api/system/vendorInvoice/
{vendorInvoiceID}/calculateTotals
Go back to the vendor invoice page, refresh it and verify the total was updated.
KOD-30731: Make tax jurisdiction editable on vendor invoices
Regression Tests
Case 1
Verify that the Vendor Invoice Detail page looks and functions correctly.
Verify that for an invoice without taxesByJurisdiction the regular Tax field is editable.
Tests
Case 1
Verify that when changing the tax on a jurisdiction (e.g. GST, QST, HST, etc.) a PATCH request is sent with the taxesByJurisdiction field and the new value.
Verify that changing one jurisdiction does not overwrite the others.
KOD-30736: Implementation
KOD-30737: Implementation - Email Sending
KOD-30738: Implementation
KOD-30745: UX - Update Order Discrepancies configuration screen to use new flow
Regression Tests
Case 1
Verify that the Order Automation page looks correct and opens without errors.
Tests
Case 1
Verify that the "Order" section displays rules with trigger = generateOrderDiscrepancies.
Verify that the "Order Items" section displays rules with trigger = generateOrderItemDiscrepancies.
Verify that the "Order Charges Discounts" section displays rules with trigger = generateOrderDiscountDiscrepancies.
Verify that the tables contain columns: Expander, Rule, Type, Level.
Verify that the Level column displays a mat-select with options EXCEPTION, WARNING, NONE.
Verify that changing Level saves immediately via API.
Verify that clicking the expander icon expands the row showing Description and Tolerance fields.
Verify that Tolerance $ and Tolerance % fields are hidden when rule.active === true.
Verify that Tolerance changes are saved.
KOD-30768: Pricing Discrepancies
KOD-30826: Set up ticket automatic emailing
KOD-30842: Allow User upload the price book file in the template
KOD-30847: products are visible for guests
KOD-30852: Kodaris - Updates for Invoice/Statement PDFs
KOD-30874: Phase 2 Country Restrictions for Ordering - Allow specific customers to order from different countries
59139: Configure - How to Create a Ship To and Generate Pricing Records of a Quote
KOD-30884: Back arrow navigation in Shared Drive folder Follow-up
Regression Tests
Case 1 Folder navigation
Click through several nested folders
Expected:
URL updates to /folder/{id} at each step.
Breadcrumbs show full path.
Case 2 Breadcrumb navigation
Navigate using breadcrumbs.
Expected:
Goes to the correct folder each time.
Case 3 Browser Forward
After using Back, click Forward.
Expected: Returns to previous folder.
Case 4 Page refresh
Refresh (F5) on root - should stay on /all.
Enter a folder, refresh - should stay in the folder with breadcrumbs.
Case 5 File preview and Back
Click a file to preview.
Click browser Back.
Expected: Preview closes, stays in folder (not navigates away).
Case 6 Direct link (deep link)
Copy folder URL from address bar.
Open a new browser tab.
Paste and navigate to the URL.
Expected:
Opens the correct folder.
Breadcrumbs show the full path to the folder.
Tests
Case 1 Back to root stays in Shared Drive
Navigate through several folders.
Click Back multiple times until you reach root.
Expected:
Final Back returns to Shared Drive root.
Does NOT redirect to Operations portal.
Case 2 Sidebar expands to selected folder
Navigate to the nested folder.
Expected:
The Sidebar tree expands to show the current folder.
59455: Fix Payment Reference number and add Invoice Number
KOD-30910: AP Automation: "Convert to Charge" UI for Vendor Invoice Line Items
Regression Tests
Case 1
Verify that the Vendor Invoice page displays and functions correctly, and that the Items tab loads and displays line items.
Verify that editing, adding, and deleting line items work correctly.
Verify that the "Manage Cross Reference" option in the three-dot menu functions correctly.
Verify that the Details tab loads and displays charges (discounts) correctly.
Tests
Case 1
Verify that a "Convert to Charge" option has been added to the three-dot menu on a line item row.
Verify that clicking "Convert to Charge" opens a dialog with the following fields: Charge Type (dropdown, required), Remember checkbox (checked by default), Cancel and Convert buttons.
Verify that the Cancel button closes the dialog without any changes.
Verify that after clicking Convert, the item disappears from the Items tab and appears as Add'l Charges in the Details tab.
Verify that when "Remember" is checked, a cross reference is created (type = web_item_to_charge).
59805: Implementation - Set Route on Ship Via when inserting orders
59806: Customer Part Number Upload
59831: Budget role enhancement - View for Project Manager role-platform
59971: French translations not working in order confirmation emails due to @Async breaking Spring request context
60001: Operations portal request 4 - Portal comments copy over to ship to
60035: "Frequently Purchased Together" Feature
60105: Implementation - Payment Methods
KOD-30920: Parser Issue
60378: Update search suggestions fixes
Regression Tests
Case 1
Make sure the mega menu still opens/loads properly and you can still see categories, brands and products.
If you click on a category, it should bring you to that category.
If you click on a brand, it should bring you to the search page (searching on * ) and filtering on that brand.
If you click on a product, it should bring you to that product.
Tests
Case 1
When searching for a product in the search bar, make sure the search is using the /suggest api instead.
If you search on an exact product code, that result should show in the mega menu (instead of nothing showing up before).
If you click enter after searching for that exact product, it will either take you to the search page on that product code or go directly to the product (depending on how the website is set up).
60512: Image Ordering Issues for Configurator Products
60592: Employee Portal - Self Service Customer Pickups
KOD-30922: Total being picked up as $0
KOD-30921: AP - Invoice Processing Failures
60758: Credit Limits on Orders Placed
60774: Kodaris - Ticket Custom Fields
60918: Updates to allowing auto merging guest cart with previous logged in cart upon login
61038: Email Integration tagging emails
61051: Kodaris - Custom Fields fix in Products, Companies
61214: DDS Product Assignments
61223: Engineering - Tracking Numbers in the Orders Screen
61246: Added CC & ACH Payment Methods Not Syncing into CSD
61304: Origin Codes
61305: Engineering - Supplier code field update
61309: Vendor Custom Export
61310: Engineering - Homepage Content Tile Font Size update
61330: Port Blog Templates
61370: Engineering - Contact Us link update
61411: Cart Message - Engineering
61494: Incorrect Pricing Returned
61582: Warehouse-Based Product Filtering
61639: Enable Catalog view for website
61673: Remove "CLONE -" Prefix from Cloned Tickets
61717: Special Order & Vendor Direct PDP Flags
61810: Add Invoice & Statement Delivery Emails as Columns on Companies View for Reporting
61897: Be able to Re-set Retail Price
62073: Integration Improvements
KOD-30926: Add Alternate columns to Terminals grid and detail page
62230: Sync in SKUs for Active Warehouses
62327: Add Location Logic to Purchase Order Pricing
62328: Fix Total Footage Calculation on Purchase Order Items
62453: Add Location to Purchase Order Details
62455: Default Quote Location From Company
62593: Configure - Set employee CRM notifications
62769: Fix Mobile Footer Button Alignment
62854: Fix Mobile Category Page Rendering
62887: Add size column
ENG-62892: Request Payment Method Link — ACH/Card Collection via Emailed Link
ENG-63200: Kodaris - Character in Blog Post template
KOD-30381: Add column employee roles to employee table
Regression Tests
Case 1
Log in with an employee that has administratorView or administratorEdit permission.
Navigate to Employees > Search tab.
Verify the existing columns ( Employee ID , Username , First Name , Last Name , Primary Email , Phone 1 , Active , Failed Logins ) still display data correctly.
Click on a column header and apply a filter — verify filtering works as expected.
Switch to the Data tab and verify the grid loads with data in all existing columns.
Tests
Case 1
Log in with an employee that has administratorView or administratorEdit permission.
Navigate to Employees > Search tab.
Click the columns selector and add the Roles column.
Verify the Roles column appears and displays comma-separated role names for employees that have roles assigned.
Export the employee list and verify the Roles column is included in the export with correct data.
Switch to the Data tab and verify the Roles column is visible with correct role data.
63261: Add a capability for an on‑demand pull of Kodaris customer contacts into Salesforce
ENG-63324: Shipping Method Carrier Code Mapping
63627: Add Fraud Endpoints to Server Side
ENG-63656: Fix customer-side listPriceBookTemplates returning 404 for group catalogs
63666: Add Create Catalog Button
ENG-63760: Credit Card Registration Report
63809: Extend Customer Password Expiration
ENG-63973: Credit Card Registration Report - UX
ENG-63980: Updating customer roles or assigned addresses does not update lastModified
KOD-30929: Add taxesByJurisdiction field to vendor invoice PATCH endpoint
Regression Tests
Case 1 - Vendor Invoice editing still works
Go to Vendor Invoices → Choose anyone for testing.
Open its details.
Try to edit its fields, for example “Purchase Order #” or other fields.