All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
custom-fields.addFieldbutton formatting inreact/admin/CustomFields.tsxmaking text clickable inside button shape.
- Unified Export action on the Organizations admin page (
New>Export): select one or more data types (Organizations, Cost Centers, Users, Addresses), run exports in parallel via the B2B Bulk Import export API, and track per-type progress in a modal table with automatic XLSX download when ready.
- Export flow migrated from GraphQL (
createExport/exportStatus) to the B2B Bulk Import export API at/api/b2b/export/?an={account}and/api/b2b/export/{exportId}/?an={account}on the Admin origin (Janus), withVtexIdclientAutCookiefrom the admin session when available; XLSX downloads use same-origin file URLs (S3 presigned links open in a new tab). - Removed separate export buttons from Organization Details (Cost Centers, Users, and Addresses); all exports are initiated from the Organizations list.
- Export job UI state persists in
sessionStorageper account for the browser tab session; polling uses 4-second intervals with per-request network retry backoff.
HasAccessno longer blocks VTEX Admin pages: permission gating applies only on the storefront (authContext: 'storefront'). Admin relies on VTEX Admin access as before.useOrgPermissionin admin now treats Owner (Admin Super) users as granted when the product-specific License Manager/grantedcheck returns false, so Super Users are not incorrectly denied view/edit actions.- Export modal keeps completed and failed export rows (with download links) in
sessionStorageper account for the browser tab session, including after closing and reopening the modal or refreshing the page. - Export file download opens external links (for example S3 presigned URLs from Reports) in a new tab instead of
fetch, avoiding CORS failures on Download file.
- Documented the XLSX export flow (REST API, progress rules, and download behavior) in
docs/README.md.
useOrgPermission: Admin (authContext: 'admin', default) uses License Manager/grantedagain viacheckUserAdminPermission. Storefront (authContext: 'storefront') usesvtex.storefront-permissionscheckUserPermission(GraphQL query ingetPermissions.graphql) plus local permission allow-lists forbuyer_organization_edit/buyer_organization_view— no LM call on the storefront.
- "NEW" user button on My Organization (storefront): License Manager
grantedcheck now sendsVtexIdclientAutCookiefrom the session cookie namespace (by account), so the request is authorized on the public domain.
- Change Cost Centers Dropdown to new limit of a thousand.
- Updated GitHub Actions quality-engineering workflow to v3.1.0
- Persistent status indicator and warning banner in UserWidget when organization is "on-hold" or "inactive"
- Organization status tag now visible in the main widget even when modal is closed
- UserWidget now displays organization selector modal when current organization status is "on-hold" or "inactive"
- Allow widget rendering even when cost center is unavailable for organizations with "on-hold" or "inactive" status
- Add visual warning messages in modal for organizations with "on-hold" or "inactive" status
- New translation keys for organization status warnings:
user-widget.organization-on-hold-warninganduser-widget.organization-inactive-warning - "Change Organization" button now appears when organization is "on-hold" or "inactive", even with single organization
- ErrorPolicy 'all' to GraphQL query to handle partial data when organization has non-active status
- English messages present in the French translation file
- Translations to previously hardcoded strings
- German translations
- Skip graphl query if parameter is null
- Fix bugs in search by term of user active organizations in user widget
- Creates infinite scroll of user active organizations in user widget
- Added buyer organization policy view and edit
- Update dependency major version. If you are updating to this major version, make sure to update the following apps (if you have then installed) to the following major versions:
- vtex.b2b-admin-customers@2.x
- vtex.b2b-checkout-settings@3.x
- vtex.b2b-my-account@2.x
- vtex.b2b-orders-history@2.x
- vtex.b2b-organizations@3.x
- vtex.b2b-organizations-graphql@2.x
- vtex.b2b-quotes@3.x
- vtex.b2b-quotes-graphql@4.x
- vtex.b2b-suite@2.x
- vtex.b2b-theme@5.x
- vtex.storefront-permissions-components@2.x
- vtex.storefront-permissions-ui@1.x
- Added functionality to apply access control according to License Manage Buyer Organization Product roles Buyer Organization View and Buyer Organization Edit distinguishing between both permission types.
- Fixed users table not updating when search returns no results.
- Update dependency major version. If you are updating to this major version, make sure to update the following apps (if you have then installed) to the following major versions:
- vtex.b2b-admin-customers@1.x
- vtex.b2b-checkout-settings@2.x
- vtex.b2b-my-account@1.x
- vtex.b2b-orders-history@1.x
- vtex.b2b-organizations-graphql@1.x
- vtex.b2b-quotes@2.x
- vtex.b2b-quotes-graphql@3.x
- vtex.b2b-suite@1.x
- vtex.b2b-theme@4.x
- vtex.storefront-permissions@2.x
- vtex.storefront-permissions-components@1.x
- vtex.storefront-permissions-ui@2.x
- Spanish translation
- Fix render on organization requests when admin customer is missing from organization
- Update imports
- Remove payment terms and price table configuration
- Remove warning about tradeName from organizations screen
- Fix object estructure
- Change
getOrganizationsByEmailtogetActiveOrganizationsByEmailto only allow listings from active organizations
- Add topbar and allow customization of content and colors by the merchant via storeframework.
- Fix action url that was hard coded
- Fixed the change
Is Requiredtext toIs Filterablepresent in warning
- Add warning holding to organizations list, show holding message and link to documentation
- Admin Cost Center addresses UI
Full ImpersonationOrganization Setting, this will allow a Impersonator to also Switch between the User's Organization/Cost Center
- Add new tab called 'settings' at organization details
- Added
getAccountquery on OrganizationDetailsSellers component to get the account data
- Review and reorder translations for better maintainability
- Fix English and Spanish string for payment terms
- Update pagination selected option in Organization Details pages
- Implement pagination for sellers in Organization Details page
- Adds optional changing on organization request
- Changes listing of custom fields from organization to cost center
- Adjust search list many organations at change organization modal
- Implement 'none' option at trade policy organization
- Adjusts list organization and research screening according to input at autocomplete
- Save new address within the Cost Center in the store
Arabic, Bulgarian, Catalan, Czech, Danish, German, Greek, English, Spanish, Finnish, French, Indonesian, Italian, Japanese, Korean, Dutch, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Swedish, Thai and Ukrainian translations.
- Save add, edit and delete address within the Cost Center in admin
- Pagination bug on admin organization details collections assignment UI
- Loading indicators for admin organization details: cost centers, collections, payment terms, price tables, and sellers
- Update bulk import ui
- Apply fixes on bulk import feature
- Add help footer on bulk import upload modal
Adds a Tooltip when the user don't have permission to access the bulk import feature.
Arabic, Bulgarian, Catalan, Czech, Danish, German, Greek, English, Spanish, Finnish, French, Indonesian, Italian, Japanese, Korean, Dutch, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Swedish, Thai, and Ukrainian translations.
- Refactor Bulk import Uploading Modal to Async Validation
- Fix unauthorized requests breaking on bulk import
- Fix error message in bulk import
- Add Bulk import feature
- Fixing on seller wrapper when there is no seller available
- Arabic, Bulgarian, Catalan, Czech, Danish, German, Greek, English, Spanish, Finnish, French, Indonesian, Italian, Japanese, Korean, Dutch, Norwegian, Polish, Portuguese, Romanian, Russian, Slovakian, Slovenian, Swedish, Thai and Ukrainian translations.
- Finished the sellers implementation by adding the SellerWrapper block into interfaces in order to complete the sellers' experience
- Improve quality gate on Sonar
- Fix to impersonate user with the role
sales
EditUserModalwas not opening in the admin
- Added metrics to Impersonate events
- Added metrics to Stop Impersonating events
- Added metrics to change team events
- Add condition to use the
manage-organizationpermission
- Update styles of the organizations list table
- Added the custom fields to the organization request admin page view
- Move the organization creation button to the topbar
- Update layout and tabs to the new admin style
- Bump @vtex/admin-ui to v0.136.1
- Fixed button label when adding/removing collections/sellers/etc to/from org
- Fixed missing back button in shopper my organizations page
showLoadingIndicatorprop on user widget which controls whether a loading indicator will be displayed while widget data is loading
- Fixed impersonation user
- Fixed pagination with organization ID
- Fixed number of organizations
- UX improvements
- [ENGINEERS-1247] - Disable cypress tests in PR level
- Added added condition in order to show business and state field disabled
- Added CssHandle class to cost center details
- German translation.
- Added CssHandle class to parent container of my account cost center creation
- Run schedule job only on saturday
- Added impersonation in order to add storefront permissions
- Bug fixed on the user widget when the user role was shown wrongly
- Added Auto Refresh when the user is authenticated and
Auto Approveis enabled
- Bug fixed on search users by organization
Custom Fields:
- Added custom fields to save more information when creating a new cost center or organization
- Custom fields not required fields on registration and could be show/hidden for the customer
- Updated admin-ui package to the latest version, which is required to make the table work
- Fixed breaking changes with Toast component
- Updated some of the wording in multiple languages
- When the user logs in or switches the organization, the data into
__RUNTIME__is updated
- Added the UI to handle the Payment terms and Price tables
- Modal to switch the company rather than AutoComplete component
- Handle the sellers on the Organization Details
- Handle the UI settings (modal, clear cart and auto approve)
- Removing the ref interface
- Bug fixed on ref interface file
- Indonesian translation.
- Arabic, Bulgarian, Catalan, Czech, Danish, German, Greek, English, Spanish, Finnish, French, Italian, Korean, Dutch, Norwegian, Polish, Portuguese, Romanian, Russian, Slovakian, Slovenian, Swedish, Thai and Ukrainian translations.
- it was removed the duplicated validation due to the one to many feature
- Cypress improvements
- Bug fixed on interfaces reference
- Added the possibility to control whether to show the dropdowns in the UserWidget component when we have more than one organization associated with the email
- Some yarn package vulnerabilities reported by Dependabot
- Fixed on the sales channel values
- Fixed on user widget label (cost center) and limit the number of organizations by 15
- Added the state registration field to the cost center UI
- Split bindings testcase into two files
- Feature related to one to many feature, it's possible to change the current organization by using the user widget on the top of storefront
- it was grouped the graphql Queries in order to improve the performance on the storefront user widget
- Improve the organization binding setting UI
- bugfix on mkt tags UI
- Move the sales channel to a separate tab and made it radio type field
- Added the marketing tags handling on the cost center details
- Reusable workflow updated to version 2
- Added sales channels binding selection setting
- Added a warning message when the customer schema is invalid.
- Translations for all Storefront languages.
- English translations.
- Fixed on update the user data, and it disappeared from the list
- Fixed organization bulk action button text.
- Initial Crowdin integration
- UI support for organization
tradeNameand cost centerphoneNumberfields
- Add error messages improvement
- Github Action to trigger manual tests by dispatch
- Added addressID duplicate check, and set hashcode of the address string as the addressID
- Fixed on the sales roles impersonation customer users
- Added new features to sales admin, a new UI to handle the users
- Added the UI pagination to users list
- Added a permission to sales manager to handle the users (manager and representative)
- Enabled all the roles on the admin UI interface organization add and edit
- Added a new UI component to handle the organizations without a sales manager
- Added handling to the addUser mutation by showing the correct message when the user already exists
- Added on the Organizations' page the navigation tabs to switch between organizations and organizations requests
- Added on the Organizations details page the navigation tabs to switch between the components being organized
- Include trade policies in price table listing
- Changed the saveUser mutation to addUser and saveUser mutations
- Added a setTimeout and set the loader until the user's table is loaded
- Fixed duplicate check to get the status from createOrganizationRequest instead of checking it in RequestOrganizationForm.tsx
- Added a new feature on creating the new address on the cost center which allows the user to set as the default address the new one.
- Added a sessionStorage remove item "b2b-checkout-settings" when a new impersonation or stop impersonation is called
- Add duplicate check for an email that is already associated with a pending or approved request
- UI for new cost center
businessDocumentfield
- Add
fetchPolicy: 'network-only'to various queries to ensure fresh data
- docs/images folder and its files to illustrate the documentation
- README.md file, reviewing the documentation
- When attempting to impersonate a user, frontend will no longer block impersonation if the
userIdis null. The impersonation mutation fromvtex.b2b-organizations-graphqlwill attempt to determine theuserIdfrom the user'sclId. If it can't, an error will be returned which will trigger the frontend to display an appropriate message.
Added default shipping address UI option to my account and admin
- Visual indicator for collections / payment terms / price tables that have been assigned to an organization (they now have a checkmark and are greyed out in the "available" list)
Impersonate Useraction in organization user list- Impersonation status in
b2b-user-widget Stop Impersonationaction inb2b-user-widget- User list now shown in Organizations admin panel
- User list is now ordered alphabetically by email
- Remove user mutation now receives correct variable
- After adding a cost center in the storefront UI, it will immediately be shown in the cost centers dropdown menu when adding or editing a user
- Remove billing options
- Added a new button after the organization request form has been submitted which cleans the localStorage property in order to enable submitting another one if the user needs
- Better validation for email addresses in forms
- Better validation for required fields in forms
- Ensure forms cannot be submitted multiple times by clicking multiple times
- Ensure cost center addresses can be edited by org admin
- Payment term toggle in admin cost center details page no longer behaves erratically
- Documentation
- SonarCloud quality analysis
- Organization status now shown in
b2b-user-widget
- "View" row action in admin organizations table
- Organization admin can enable/disable specific payment term options per cost center
- Bug preventing cost center details page in admin from rendering
- Organization request form will now show an appropriate message if the current user has already submitted a request
- My Organization link/page to My Account
/organization/(:id)and/cost-center/:idroutes (these pages are now accessible via My Account)
- Payment Term and Collection IDs are now saved/loaded correctly in organizations admin UI
- Sales users are no longer editable by organization users in storefront organization UI
b2b-user-widgetblock and component to show logged in user's organization details- Additional permission checks to storefront UI
- Improved breadcrumb on cost center details page (storefront and admin)
- Storefront UI for B2B customer admins to manage their organization (cost centers and users)
- Store admin can now delete cost center addresses
- Update toast usage to match new
@vtex/admin-uirequirements - Allow organization names to be changed through
OrganizationDetailsadmin component
- Organization Payment Terms
- Optimize intl messages
- Initial release