In this release, we're excited to announce the launch of our new AI chat feature in the Operations Portal.
Everyone is coming out with AI chat features nowadays but we've taken a unique approach that puts your privacy first. Unlike public AI services that pool and share data to train their models, your conversations in our Operations Portal stay completely private to your company. Built on AWS infrastructure and powered by Anthropic's language model, you can use this tool knowing your sensitive information won't become part of a larger dataset.
The chat assistant can be used for many different things including meeting summarization, drafting emails, or getting quick answers to your questions. This is just the beginning, we're actively developing deeper integration with your data, which will allow the your private AI instance to tap into your organization's knowledge base. Soon, you'll see AI capabilities embedded throughout the Operations Portal, including AI-generated PIM, data prompts and more.
During this beta period, we're offering the service free of charge to let you explore its capabilities. When we move to production, it will be a cost-effective, pay-as-you-go pricing model based on token usage - typically amounting to just a few dollars per month for most users.
Please try it out, give us feedback, and we'll continue to improve and build it throughout the Kodaris product to save you time, keystrokes and effort in in your daily tasks.
https://youtu.be/pERRP_m4E5I
Assign additional user roles without replacing existing roles
You’ve been able to manage user roles in bulk by using the import feature available on the Customers screen. Now, you can more easily assign new roles to accounts with existing roles by adding a column titled “addRoles” to your import spreadsheet.
This import capability will allow you to assign additional permissions to user accounts without overriding any existing roles that the accounts hold. For example, if you would like to assign the “accountsPayable” role to a user who currently has the “companyAdmin” role, an import can be created to only add the “accountsPayable” role without removing the “companyAdmin” permissions.
Check out the video below to see how you can set up your import to use this feature:
https://youtu.be/4a9KQHHybW8
Edit SEO fields with new “seoEdit” role
When managing SEO for your content pages, products, and product categories, it might be helpful to have a specific user role that’s dedicated to only editing SEO fields.
Now, you can assign the new “seoEdit” role to users, which will allow them to edit all the SEO details for your products, content pages, product categories, and general SEO settings in the Operations Portal without needing additional access to edit pages.
Learn more about this role and how to assign it to your employees by watching this video:
https://youtu.be/q1RzE7MmTPw
“Category” filter added to the Attribute Assignment tab on Products screen
When managing your product attributes via the Kodaris PIM, you may find it useful to be able to filter by product category. In this release, we’ve added a new filter titled “Category” to the Attribute Assignment tab on the Products screen. With this feature, you’re able to filter by product category so that the screen only displays the products assigned to the category you searched. This can help you further maintain and update your PIM data by tailoring product searches, customizing your imports and exports, and more.
Watch the video below to see how you can use this feature:
https://youtu.be/_I44KVvfJVs
Tickets
KOD-18649: Create help content for web active flag on company address
KOD-20285: BI for Top Selling Products
KOD-22624: Set up Statement templates
KOD-22816: DO Project
KOD-23201: Implementation
KOD-23239: Scoping next steps on BI and Campaign integration with Marketing
KOD-24087: Add GET endpoint "/api/system/contentPage/{contentPageUUID}/revision/{revisionDate}" to operations portal
Tests
Case 1
You need to access swagger and test this GET endpoint: /api/system/contentPage/{contentPageUUID}/revision/{revisionDate}
Case 2
You can repeat this test on server-side (user script), using the same endpoint: /api/system/contentPage/{contentPageUUID}/revision/{revisionDate}
KOD-24092: Turn off Test Site
KOD-24210: Permission error when forwarding an email
Tests
Case 1
You need to test endpoint /api/system/ticket/{ticketID}/email/sendEmail. It is in Ticket section from services screen. It is similar to the one in Email section, but also you need to provide a valid ticketID.
KOD-24296: Custom Company for ID Orders
KOD-24300: Handling Fee Application - Update
KOD-24305: Access selected warehouse in search interceptors
KOD-24372: Logo switch with language
Regression Tests
Case 1
Open any host.
Change the website language to French.
Verify that the logo in both the header and footer is displayed correctly for the specific site.
Change the language to another language.
Verify the correct logo display in the mobile version.
Tests
Case 1
Open the website.
Change the website language to French.
Verify that the logo in the header is displayed with the French translation.
Verify that the logo in the footer is displayed with the French translation.
Check the mobile version to ensure the logo displays correctly in French.
KOD-24375: No Header Section in French menus - Error message
KOD-24378: Move all news from the list as blog post pages into the Kodaris system
KOD-24417: Total Balance not matching periods 1-5
KOD-24432: Configure Customer Portal
KOD-24497: Customer Mobile App
KOD-24498: Replace Lists with Catalogs
Tests
Case 1
In the operations portal → Settings → “customerProductListsEnabled” make sure this setting is set to “0“.
In customer portal there should be “catalogs“ in the header nav.
Try to create new catalog.
Try to add some products to the catalog.
Try to edit catalog.
Check if created catalog is displayed in shop by category menu.
KOD-24514: Configure Customer Portal
KOD-24513: Allow Employees to Only Edit SEO Meta Fields
Regression Tests
Case 1
Common User without editRole but with correspond role for each entity (Example for product → productEdit, for category → categoryEdit, for content page → contentEdit, for setting → settingEdit)
Should be able to edit SEO fields + any other field in the screen.
Also, verify you can generate the sitemap in the SEO screen.
Tests
Case 1
User with role ‘seoEdit’ and without any of these roles: ‘productEdit' / ‘superuser’ , ‘administrator’ , ‘categoryEdit’, 'contentedit’, 'settingEdit'
Should be able to edit the SEO fields in Product, Category, Content Page and SEO settings (Marketing → SEO) as well as generating the sitemap.
If you test changing any field from swagger, you will notice that only the SEO fields will be updated and nothing else.
If you test changing any value that is not SEO field in the screen, you will see that changes won’t be reflected.
KOD-24523: Quiet down logging
KOD-24537: Update order type insert on company
Regression Tests
Case 1
Operations portal
Expected result:
Company detail page works fine.
#Order detail page works fine.
Tests
Case 1
Operations portal → Company detail page works fine.
Expected result:
Category field shows companyOrderTypes in dropdown.
The selected value is being saved to companyCustomerType company setting.
Case 1
Operations portal → Order detail page works fine.
Expected result:
There is no Order type field.
KOD-24553: AP Automation and Vendor Automation screens - Add freight code default
Regression Tests
Case 1
AP automation screen.
Expected result:
Works fine.
Line Total Tolerance field works fine.
Case 2
Vendor Details screen.
Expected result:
Works fine.
Tests
Case 1
AP automation screen.
Expected result:
"Default Freight Code" field was added.
It lists vendor invoice discounts.
Represents the apAutomationDefaultFreightCode setting.
It’s possible to update the field.
The field displays discount name but saves discount code.
Case 2
Vendor Details screen => Automation section.
Expected result:
"Default Freight Code" field was added.
It lists vendor invoice discounts.
Represents the vendorSettings.defaultFreightCode setting, falls back on apAutomationDefaultFreightCode setting if does not exist.
It’s possible to update the field.
If vendorSettings.defaultFreightCode doesn’t exist, it’ll be created after the first edit.
The field displays discount name but saves discount code.
Case 3
AP automation.
Vendor Details screen.
User provides a free-hand input to the "Default Freight Code" field.
Expected result:
Code is saved.
Page works fine.
After page refresh everything works fine.
It’s possible to select value from dropdown and update the setting.
KOD-24560: Home page - Map section
KOD-24563: CMS page
KOD-24574: Implementation - News page
KOD-24577: Updated Primary Image Not Showing
KOD-24576: Able to Export Customer Default Store
KOD-24589: Investigate Missing Images
KOD-24599: Add Category filter to the product page in Kodaris - UX
Regression Tests
Case 1
In the operations portal, navigate to Products → attribute assignment and make sure the page still loads.
Case 2
Make sure you can still filter by an attribute.
Case 3
With an attribute in the filter, make sure the export is still working properly.
Case 4
Navigate to products → filter categories → click into one → attributes → make sure the export still works properly.
Case 5
Navigate to tickets → click into a ticket → product lists → click into a product list → items → make sure the export still works properly.
Tests
Case 1
Products → Attribute Assignment → notice you can now filter by category → search for a category and click one → notice the list filters accordingly.
Case 2
Now with that category selected, go to export the list → notice the data in the file is also filtered.
Case 3
With a category selected, also filter by attribute and notice the list filters down even more → export the data and notice the file has the same data as the table.
KOD-24616: Customers and Employees Able to Go In & Update Retail Price
Tests
Case 1
The idea is that every time you update a Product under a Catalog the lastModifiedLocally should be updated with current date.
Doing that, needsSyncingToErp should be updated to TRUE as well (It is autocalculated. If "lastSyncedToErp < lastModifiedLocally. " then it is true)
Under a catalog → Items, update any field on the Product.. For instance CatalogProductOrder.
Verify (In the response) that lastModifiedLocally was updated and also needsSyncingToErp changed to ‘TRUE’.
For updating markupType you might need to use Swagger since it is not available from UX.
First you need to log in as a Customer, find a catalog that you have access and try to edit a current product under that catalog
(Remember getting the token from /api/user/customer/authToken before hitting the /account endpoint)
In the operations portal, verify that product in the catalog has the lastModifiedLocally updated and markupType with the value patched.
Case 3
Update or create a product under a catalog from the operations portal which means that it is a User update.
Upload a csv file to update a product based on catalog code, company code and product code. Example of csv file:
"code","companyCode","productCode","markupType"
You can use the import ‘Create and Update’ which is basicCompanyProductCategoryProductUpload.
Verify in the /list response from that screen the the lastModifiedLocally is updated.
KOD-24622: Update mapping to include "Brand"
KOD-24650: Custom API Call for Updating Data
KOD-24653: Error when submitting register form
Tests
Case 1
Register form should be functional with setting "customerRegistrationEnabled" = 0 on customer sites.
KOD-24667: Homepage design
KOD-24672: Display Deposit Notes in Comments and Emails
Regression Tests
Case 1
Make a payment and deposit without notes.
Both payment emails should work as normal with no errors.
Tests
Case 1
Make a deposit with a note.
The note should appear at the end of the payment details section on both emails.
KOD-24673: Ability to Import Vendor Users
KOD-24675: Check and see if UPC code is in search
KOD-24688: Show vendor number on price record in UX
Tests
Case 1
Open the Operations Portal.
Navigate to Pricing Records.
Go to Company Addresses → Select a Company → Open the Pricing.
Companies → Select a Company → Open the Pricing.
Quotes → Select a Quote → Open the Pricing.
Pricing section.
Click on Show/Hide Columns and add the "vendorCode" column.
Verify that:
The "vendorCode" column is displayed to the user.
The user can edit the values in the "vendorCode" column.
KOD-24699: Ticketing system issue
KOD-24703: Add fields to the all user screens: Platform
KOD-24705: Terminal Payment Testing
KOD-24706: Terminals - Support deleting/editing payment methods
KOD-24710: Alternate UX option for moving between the banners on home page
Tests
Case 1
Open the website.
On the homepage, a banner with two arrows should be displayed.
Click left and right and make sure the navigation works.
Check the display on the mobile version.
KOD-24709: Ability to upload English and French Banner's On Product Pages
Regression Tests
Case 1
Categories page works fine.
Case 2
Managing Category works fine.
Banner → Display field works fine (bannerEnabled setting).
Banner Link works fine.
Tests
Case 1
Category page.
Category banner is already set.
It’s shown for any language.
Category settings are set: bannerEnabled, bannerImage, bannerLink
French language is selected.
User manages the banner.
Expected:
The banner image is saved to the bannerImageFr setting.
French banner is shown on the page.
For other languages the default banner.
Case 2
Category page.
Brand new category/Category where banner was never set.
No banner is shown.
French Language is selected.
User manages the banner.
Set image.
Expected result:
The banner image is saved to the bannerImageFr setting.
No banner is shown on the page neither for French nor for other languages.
Case 3
Switch language to English.
Upload the banner.
Expected result:
French banner uploaded in Case 2 is shown for French language.
English banner uploaded in Case 3.3 is shown for other languages.
Case 4
Category page.
Brand new category/Category where banner was never set.
No banner is shown.
English Language is selected.
User manages the banner.
Set image.
Expected result:
The banner image is saved to the "bannerImage" setting.
Banner is shown on the page for every language.
Case 5
"bannerEnabled" setting is “global“ for all locales:
Is on - banners are shown for all locales.
Is off - banners are hidden for all locales.
Case 6
"bannerLink" setting is "global" for all locales: the same banner link is being used for all languages.
KOD-24712: Add specs feature to customer site
Tests
Case 1
Select any product.
Verify Product Details Sections.
Check Specs Section:
If the “Specs” section contains specifications, confirm that they are displayed correctly.
If the “Specs” section is empty, verify that the following message is displayed: “There are currently no specs for this product.”
Update Specs via Operations Page (if absent).
Navigate to the Operations page.
Use the search panel on the left to find “Products” (Ensure you have one of the required permissions: ‘administrator', 'superuser', 'productView', 'productEdit').
Select the necessary product or enter its name in the search bar.
Click the “>” button for the selected product.
Find the “Specs” tab and add several properties for testing purposes.
Verify Update on Product Page.
Return to the website’s main page.
Use the header search to find the updated product.
Review its details to ensure that the specs entered via the Operations page are now displayed correctly.
KOD-24718: Fix iOS decimal QTY & when checking, don't require the inputs
KOD-24719: Update endpoint to see ticket emails
Regression Tests
Case 1
In the Operations Portal open any Ticket details and go to emails screen on that Ticket.
Make sure Ticket Emails Screen is loaded with no issues.
Make sure grid displays Ticket Email records with no issues.
Case 2
From the global Emails Screen.
Compose new email and send it.
Refresh emails grid.
Click Forward Email button.
Update cc/bcc and email body. Click send.
Make sure api/system/email/sendEmail is used for that.
Refresh the Emails Grid.
Click Review Email or Forward Email button to check all email info.
Make sure that email contains all the info you’ve specified on the step 4.
Tests
Case 3
In the Operations Portal open any ticket details and go to emails screen on that ticket.
Compose several Emails.
Open Devtools → Network tab.
Refresh the grid.
Make sure this endpoint is being used to fetch ticket emails: api/system/ticket/{ticketID}/email/list.
Case 4
Using steps 1, 2, 3 from the previous case click Forward Email button on the Ticket Email.
Edit recipients (to emails, cc, bcc) and email body.
Click send.
In the network Tab check requests sent:
Make sure for after you’ve clicked “Send” this POST endpoint was used.
Make sure you can see your ticket email with updated data from the step 2.
Case 5
From the global emails screen find ticket email.
Forward that email following steps 1,2 from Case 4.
Make sure for forwarding ticket email from the global Emails Screen this POST endpoint is being used: api/system/ticket/{ticketID}/email/sendEmail?replyToSender=true.
Refresh Emails and Ticket Emails grids.
Make sure you can see this forwarded ticket email on both grids.
Make sure your forwarded email has all info that you’ve specified in Step 2 of this case.
KOD-24721: Make kd.pageService.getUrl generate link without host
Regression Tests
Case 1
For sites that do not have hosts, click around into different articles and make sure they still load properly.
Case 2
Also make sure the breadcrumbs on those sites with no hosts are set to what they were before.
Tests
Case 1
Find a site that has hosts and useV2SEOFilterUrls is set to 1 → Click into different articles on the site and notice that the host code is no longer in the URLs.
Case 2
Also make sure the breadcrumbs have the correct URL without the host code.
Case 3
Find a site that has hosts but useV2SEOFilterUrls is set to 0 or doesn’t exist → click into different articles on the site and notice that the host code is no longer in the URLs.
Case 4
Also make sure the breadcrumbs have the correct URL without the host code (useV2SEOFilterUrls is set to 0 or doesn’t exist)
KOD-24736: Update Credit Request Number
KOD-24737: Update product list page
Regression Tests
Case 1
Check that the product sheet page looks correct for both the user and the guest.
Check that the product page looks correct in the catalog.
Check that there are no errors in the console.
Tests
Case 1
Check that the structure of the product card on the product list page is correct.
The image is displayed at the top of the card.
The brand is displayed before the text.
The name is displayed after the brand.
Below the name, the part, manuf part (if any), and your part (for the user) are displayed.
Check that the card layout looks correct on different screens.
Check that the product card structure on the catalog page is correct.
KOD-24738: Add store inventory flyout
Regression Tests
Case 1
As both guest and logged in users, check the product list and product detail pages.
They should work as normal without errors.
Tests
Case 1
As a logged in user, check both the product list and product page that there is now the option to ‘Check Other Locations’ underneath the inventory.
Once clicked, it should open a side panel that shows:
The product.
All the other locations (the name, address, and inventory level in each).
And a search bar to search by postal code.
Case 2
Try searching in the locations sidebar, the locations nearest to your postal code you entered should show first.
Also test using the ‘Current Location’ option (make sure you have location enabled for the site).
KOD-24741: Images don't zoom when mouse hover
Regression Tests
Case 1
Check desktop and mobile product detail pages for several products.
Open any product detail page of the product that has image displayed.
Make sure product details page styling look as expected with no styling issues.
Make sure product images are loaded with no issues.
Make sure product images are displayed with no styling issues.
Tests
Case 1
Check desktop and mobile product detail pages for several products.
Open any product detail page of the product that has image displayed.
Hover your cursor over the product image.
Make sure it is magnified but in the borders of the original product image.
KOD-24743: String index out of range: -1
KOD-24767: Remove debugging
KOD-24768: Kodaris - AI Chat
Regression Tests
Case 1
Test if Chat is working correctly.
Tests
Case 1
Start conversation with chat.
Try to clear conversation, once you get some response. (Clear button is available after first response).
KOD-24772: Add fraudDataEdit and fraudDataView roles
Tests
Case 1
Log with a employee without fraudDataView and fraudDataEdit roles (also administrator/superuser), assure that you cannot view and edit fraud data on Fraud Data screen - operations portal.
KOD-24774: ICSS syncs not syncing
KOD-24781: Add "Return & Refund Policy" link to the footer
KOD-24782: Fix error after page load
Regression Tests
Case 1
As both a logged in and logged out user, make sure the product list page still loads properly.
Case 2
Log into the operations portal but navigate back to the commerce site and go to a category page → notice the error message still doesn’t show as well as you can click the Actions button and click Create Campaign and then a modal will appear.
Tests
Case 1
Log into site, open up the dev tools, and go to any category page → notice there is no more error message about the classList being undefined.
KOD-24784: Customer Portal Intro Email Updates
KOD-24787: Remove Duplicate Brands
Regression Tests
Case 1
Open any product details page of any product.
Make sure page is loaded with no issues.
Make sure styling looks good.
Make sure you can add product to a cart in the desired quantity.
Case 2
Find product with some specs.
Check its specs tab.
Make sure specs are displayed properly in 2 columns. Line by line.
Case 3
In the Operations portal in Filter Categories find fg_brand.
Set it’s Product Display value to “No“.
Wait 10 minutes to make sure results are applied.
In the Operations portal search for a product.
On the Attributes tab on this product set any active value with fg_brand… for this product attribute.
You can check active fg_brand on the fg_brand attributes tab.
Open Specs Tab on this product. Set Brand spec with any random value.
Open this product details page on the storefront. Check Specs Tab. Make sure in Specs there is spec called Brand with value you’ve provided on step 5 of this case.
In the Operations Portal remove Brand spec from specs at all.
Open storefront: product details page. Make sure you cannot see any Brand records in specs.
Tests
Case 4
Navigate to the product page.
Open the "Specs" tab.
If Filter Categories / fg_brand Product display = Yes and the product has a "Brand" field in "Specs", only the brand from "Filter Categories" should be displayed.
If Filter Categories / fg_brand Product display = No, and the product has a "Brand" field in "Specs", only the brand from "Specs" should be displayed.
If Filter Categories / fg_brand Product display = No, and the product does not have a "Brand" field in "Specs", no brand should be displayed.
KOD-24791: Pull and Test Addons
KOD-24794: POD signature showing in customer files not images
KOD-24807: Update setting companyOrderTypes with value of companyCustomerTypes setting
KOD-24808: Fix product close icon for catalogs and other fixes
KOD-24814: Release Mobile Apps
KOD-24815: Check Templates for Catalog Feature
Regression Tests
Case 1
Make sure product list still loads and clicking into a product still loads properly.
Case 2
Make sure setting customerProductListsEnabled is set to 1.
Notice the saved lists button at the top is still there → click into it → if you are not logged in, it will prompt you to log in first, then it will take you to your saved lists page.
Case 3
Click into a category and notice the add to list button in both the grid and list view → click on it and you should be able to add that product to a list.
Same thing if you click into a product →. Add to list should be there and you should still be able to add that product to a list.
Tests
Case 1
Make sure setting customerProductListsEnabled is set to 0 in order to enable catalogs.
You should see the Catalogs button at the top instead of Saved Lists → click it and if you aren’t logged in it should route you to the login in page then redirect you to the catalogs page, if you are logged in, it will take you to the catalogs page.
Case 2
On the catalogs page, you will see company catalogs and my catalogs.
If you are a company admin, you should be able to create a company catalog → Click Add Catalog and a pop up should appear → add in all info and click add.
You can do the same for My Catalogs.
Case 3
Click into a company catalog → if you are a company admin and customerCanModify is set to true on the category, then you will see the edit and delete buttons.
Click edit and update one of the values → click save and you will see those updates.
Click delete and a pop up should appear → click delete and catalog is deleted and it should bring you back to the catalogs page.
Case 4
Click into a company group catalog → you will not see an edit or delete button.
Case 5
Click into a customer catalog → if customerCanModify is set to true on the category, then you will see the edit and delete buttons.
Click edit and update one of the values → click save and you will see those updates.
Click delete and a pop up should appear → click delete and catalog is deleted and it should bring you back to the catalogs page.
Case 6
Go to any category page → you will see an add to catalog button on both the grid and list view → click it and the list of catalogs should appear → click one and that product should be added to that catalog.
Case 7
Click into any product → you will see an add to catalog button → click it and the list of catalogs should appear → click one and that product should be added to that catalog.
Case 8
On all catalog pages you will see breadcrumbs at the top → always starts with Home / Catalogs (clicking those will navigate you to the home page and the catalogs page) → the other breadcrumbs will be the catalogs and if that catalog has a parent catalog or not.
KOD-24818: Customers and Employees Able to Go In & Update Retail Price UX
KOD-24826: Company code has wrong input type on the company categories screen
Regression Tests
Case 1
In the operations portal, make sure the company product categories screen still loads properly.
Tests
Case 1
On the company product categories page, add the company code column → notice how there is no more error saying it expects a number.
Case 2
You should not be able to update company code.
KOD-24830: Missed categories
KOD-24832: Implementation - Results Copy Update
Regression Tests
Case 1
Verify that category pages still looks good.
Tests
Case 1
Navigate to category page which doesn’t have any products.
You should see "Product listing coming soon".
KOD-24834: Create function to only add new roles instead of replace on import
KOD-24833: Remove Dashed Lines on Product Imagery
Regression Tests
Case 1
Check that category pages looks good (grid, list, catalog).
Tests
Case 1
Check that you don’t see line around products for list view.
KOD-24836: Configure storeEmailAddress
KOD-24835: Homepage Map update
KOD-24838: Text Edits
KOD-24837: News page update
KOD-24840: Mapping updates
KOD-24852: Make defaultConsumerCompanyCode setting host compatible
Regression Tests
Case 1
Test existing logic for defaultConsumerCompanyCode global setting.
Tests
Case 1
Test host specific defaultConsumerCompanyCode setting.