You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Due for payment 2026-11-02] [CFI] [$175] Support appending a custom tag list next to accounting-connection tags in NewDot (indirectTagUploads) #102308
Version Number: Reproducible in staging?: Needs Reproduction (Reproduction blocked - No access to beta) Reproducible in production?: Needs Reproduction If this was caught during regression testing, add the test name, ID and link from BrowserStack: Email or phone of affected tester (no customers): Logs:https://stackoverflow.com/c/expensify/questions/4856 Expensify/Expensify Issue URL: Issue reported by:@twisterdotcom Slack conversation (hyperlinked to channel name): #Expensify Bugs
Action Performed:
Preconditions: a Control workspace connected to NetSuite, with tags imported from NetSuite. The admin's domain is on the indirectTagUploads beta. Not reproduced on a test workspace: the beta is set per domain or account
In Classic, open Settings > Workspaces > [workspace] > Tags. Note the button "Append a custom tag list from a CSV" under the integration banner.
In New Expensify, open Workspaces > [workspace] > Tags.
Select More.
Note that the dropdown has no import or append option.
Expected Result:
New Expensify shows "Append custom tag list" in More for accounts on the beta, and the import keeps the NetSuite lists, the same as Classic.
Actual Result:
More has no option to import or append tags. A direct link to the import page shows the not-found page. Customers cannot add their indirect tag list(s) in New Expensify. This blocks their NetSuite workspace from migrating. Every account on the beta hits this at migration. Code pointers in Slack thread
Workaround:
Append the list in Classic. New Expensify reads the same tag lists. This route ends at the Classic cutover. The customer knows.
Platforms:
Select the officially supported platforms where the issue was reproduced:
CONST.BETAS has no indirectTagUploads entry, and no file in src/ mentions it.
Neither import command can append:
ImportTagsSpreadsheet sends only {policyID, tags} (Tag.ts:271-291). It can't name a target list, so it would write into the first NetSuite list.
ImportMultiLevelTags replaces all lists (Tag.ts:906-912). The confirm copy says so: "The existing tags will be overridden" (en.ts:7087).
What changes do you think we should make in order to solve the problem?
⚠️ This needs backend work first. An internal engineer must add an append mode that adds a tag list and keeps the NetSuite lists. That engineer must also confirm a NetSuite sync won't wipe appended lists. The App repo can't make these changes.
After the backend supports append, make these App changes:
Add INDIRECT_TAG_UPLOADS: 'indirectTagUploads' to CONST.BETAS.
In WorkspaceTagsPage, add an "Append custom tag list" item to More when:
the user can write tags;
the workspace has an accounting connection; and
the beta is on.
Have that item set an "append" flag on the imported spreadsheet. Then send the user straight to the file import. This skips the options page and its "override" and "erase all tags" modals.
Relax the NotFoundPage guards in ImportTagsPage and ImportMultiLevelTagsSettingsPage. Allow the page when the beta is on and the append flag is set.
Pass the new append parameter in importMultiLevelTags. Force the list to be independent, and hide the dependent toggle.
Add the new menu label to every src/languages/*.ts file.
What alternative solutions did you explore? (Optional)
You could remove the accounting-connection guard for beta users and keep the current import. That would override or corrupt the NetSuite lists, so it doesn't meet the expected result.
Investigation details
The same hasAccountingConnections check also hides Add tag (WorkspaceTagsPage.tsx:553) and bulk Delete (:584). Leave both unchanged.
Nothing recent changed this gating. It is a missing feature, not a regression.
I couldn't reproduce this in the app, because test accounts can't get the beta.
Confidence is high on the App gating. It is medium on "replace vs. append." I inferred that from the API parameters and UI copy, not from backend code.
The quick search found no duplicate issues.
Next Steps for Contributor+ team: To accept:@MelvinBot implement [this](https://github.com/Expensify/App/issues/102308) to create a draft PR (only after the backend append support exists). To refine:@MelvinBot <your feedback> To reject: Explain why you are rejecting Melvin's proposal.
changed the title [-]New Expensify cannot append a custom tag list next to accounting-connection tags (indirectTagUploads beta). Classic can.[/-][+][$175] New Expensify cannot append a custom tag list next to accounting-connection tags (indirectTagUploads beta). Classic can.[/+]on Sep 25, 2026
changed the title [-][$175] New Expensify cannot append a custom tag list next to accounting-connection tags (indirectTagUploads beta). Classic can.[/-][+][CFI] [$175] New Expensify cannot append a custom tag list next to accounting-connection tags (indirectTagUploads beta). Classic can.[/+]on Sep 25, 2026
changed the title [-][CFI] [$175] New Expensify cannot append a custom tag list next to accounting-connection tags (indirectTagUploads beta). Classic can.[/-][+][CFI] [$175] Support appending a custom tag list next to accounting-connection tags in NewDot (indirectTagUploads)[/+]on Sep 28, 2026
changed the title [-][CFI] [$175] Support appending a custom tag list next to accounting-connection tags in NewDot (indirectTagUploads)[/-][+][Due for payment 2026-11-02] [CFI] [$175] Support appending a custom tag list next to accounting-connection tags in NewDot (indirectTagUploads)[/+]on Oct 26, 2026
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.20-5 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2026-11-02. 🎊
The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]
[Contributor] The offending PR and associated issue have been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
N/A — this is a new feature (adding "Append custom tag list" for workspaces with an accounting connection on the indirectTagUploads beta), so there is no offending PR.
[Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
N/A
[Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.
Regression Test Proposal
Precondition:
Account is on the indirectTagUploads beta.
Control workspace connected to NetSuite, with Departments imported as tags (Accounting > NetSuite > Import > Departments > Tags).
An independent multi-level tags CSV.
Test:
Go to Workspaces > [workspace] > Tags.
Click More.
Verify "Append custom tag list" is shown and "Import spreadsheet" is not.
Click "Append custom tag list" and upload the CSV, then click Next > Import.
Verify the import completes, the NetSuite tag list is still there, and the lists from the CSV appear next to it.
its App code sends the request correctly. The server rejects the import. The most likely cause is that the tester's account is not on the indirectTagUploads beta
42. @suneox is that saying this issue is left to complete? #105001
@trjExpensify No, this issue's scope is done, #105001 is not caused by #103359. That PR doesn't change the tag-list rename flow (DynamicWorkspaceEditTagsPage, DynamicWorkspaceViewTagsPage, renamePolicyTagList)
Backend bug or not, I think it's still related to this new feature of being allowed to append a tag list alongside accounting imported ones. So we should resolve it before calling this feature release "done". @yuwenmemon do you agree with that, and are you or do you have someone looking into #105001?
Activity
MelvinBot commentedon Sep 25, 2026
Proposal
What is the root cause of that problem?
New Expensify never supported importing tags on a workspace with an accounting connection. The
indirectTagUploadsbeta doesn't exist in App.WorkspaceTagsPage.tsx:476. A NetSuite connection hides it.NotFoundPagefor a connected workspace. That's why a direct link shows not-found. SeeImportTagsPage.tsx:42,ImportTagsOptionsPage.tsx:227, andImportMultiLevelTagsSettingsPage.tsx:82.CONST.BETAShas noindirectTagUploadsentry, and no file insrc/mentions it.ImportTagsSpreadsheetsends only{policyID, tags}(Tag.ts:271-291). It can't name a target list, so it would write into the first NetSuite list.ImportMultiLevelTagsreplaces all lists (Tag.ts:906-912). The confirm copy says so: "The existing tags will be overridden" (en.ts:7087).What changes do you think we should make in order to solve the problem?
After the backend supports append, make these App changes:
INDIRECT_TAG_UPLOADS: 'indirectTagUploads'toCONST.BETAS.WorkspaceTagsPage, add an "Append custom tag list" item to More when:NotFoundPageguards inImportTagsPageandImportMultiLevelTagsSettingsPage. Allow the page when the beta is on and the append flag is set.importMultiLevelTags. Force the list to be independent, and hide the dependent toggle.src/languages/*.tsfile.What alternative solutions did you explore? (Optional)
You could remove the accounting-connection guard for beta users and keep the current import. That would override or corrupt the NetSuite lists, so it doesn't meet the expected result.
Investigation details
hasAccountingConnectionscheck also hides Add tag (WorkspaceTagsPage.tsx:553) and bulk Delete (:584). Leave both unchanged.Next Steps for Contributor+ team:
To accept:
@MelvinBot implement [this](https://github.com/Expensify/App/issues/102308)to create a draft PR (only after the backend append support exists).To refine:
@MelvinBot <your feedback>To reject: Explain why you are rejecting Melvin's proposal.
view run
melvin-bot commentedon Sep 25, 2026
Triggered auto assignment to Contributor-plus team member for initial proposal review - @suneox (
External)[-]New Expensify cannot append a custom tag list next to accounting-connection tags (indirectTagUploads beta). Classic can.[/-][+][$175] New Expensify cannot append a custom tag list next to accounting-connection tags (indirectTagUploads beta). Classic can.[/+]melvin-bot commentedon Sep 25, 2026
Job added to Upwork: https://www.upwork.com/jobs/~022103491582258705498
[-][$175] New Expensify cannot append a custom tag list next to accounting-connection tags (indirectTagUploads beta). Classic can.[/-][+][CFI] [$175] New Expensify cannot append a custom tag list next to accounting-connection tags (indirectTagUploads beta). Classic can.[/+][-][CFI] [$175] New Expensify cannot append a custom tag list next to accounting-connection tags (indirectTagUploads beta). Classic can.[/-][+][CFI] [$175] Support appending a custom tag list next to accounting-connection tags in NewDot (indirectTagUploads)[/+]trjExpensify commentedon Sep 28, 2026
@suneox what do you think about Melvin's proposed implementation?
suneox commentedon Sep 28, 2026
I'll take a look at this in few hours
22 remaining items
melvin-bot commentedon Oct 26, 2026
If you are the assigned CME please investigate whether the linked PR caused a regression and leave a comment with the results.
If a regression has occurred and you are the assigned CM follow the instructions here.
If this regression could have been avoided please consider also proposing a recommendation to the PR checklist so that we can avoid it in the future.
[-][CFI] [$175] Support appending a custom tag list next to accounting-connection tags in NewDot (indirectTagUploads)[/-][+][Due for payment 2026-11-02] [CFI] [$175] Support appending a custom tag list next to accounting-connection tags in NewDot (indirectTagUploads)[/+]melvin-bot commentedon Oct 26, 2026
@suneox
The solution for this issue has been 🚀 deployed to production 🚀 in version 9.5.20-5 and is now subject to a 7-day regression period 📆. Here is the list of pull requests that resolve this issue:
If no regressions arise, payment will be issued on 2026-11-02. 🎊
The following checklist (instructions) will need to be completed before the issue can be closed. Please copy/paste the Contributor+ Checklist from here into a new comment on this GH and complete it. If you have the K2 extension, you can simply click: [this button]. If no checklist is needed for this issue, you can click: [no checklist button]
suneox commentedon Oct 27, 2026
Contributor+ Checklist:
[Contributor] The offending PR and associated issue have been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake.
N/A — this is a new feature (adding "Append custom tag list" for workspaces with an accounting connection on the
indirectTagUploadsbeta), so there is no offending PR.[Contributor] If the regression was CRITICAL (e.g. interrupts a core flow) A discussion in #expensify-open-source has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner.
N/A
[Contributor] If it was decided to create a regression test for the bug, please propose the regression test steps using the template below to ensure the same bug will not reach production again.
Regression Test Proposal
Precondition:
indirectTagUploadsbeta.Test:
Do we agree 👍 or 👎
suneox commentedon Oct 27, 2026
Linked deploy blockers
2 deploy blockers were linked to #103359:
Tags - Error importing CSV when appending custom tag list #104904: not caused by Add Append custom tag list for accounting-connected workspaces on the indirectTagUploads beta #103359, per Tags - Error importing CSV when appending custom tag list #104904 (comment):
After the test account was added to the beta it no longer reproduced (Tags - Error importing CSV when appending custom tag list #104904 (comment)). Closed by jasperhuangg with no fix PR.
[$175] Tags - Not here page opens after editing custom tag name from uploaded CSV #105001: still under investigation. PR #103359 doesn't change the tag-list rename flow (
DynamicWorkspaceEditTagsPage,DynamicWorkspaceViewTagsPage,renamePolicyTagList). It reproduces only when renaming the first list appended from the CSV, and the current analysis points to the backend assigning that list anorderWeightthat collides with the existing accounting listtrjExpensify commentedon Oct 28, 2026
@suneox is that saying this issue is left to complete? #105001
suneox commentedon Oct 29, 2026
@trjExpensify No, this issue's scope is done, #105001 is not caused by #103359. That PR doesn't change the tag-list rename flow (
DynamicWorkspaceEditTagsPage,DynamicWorkspaceViewTagsPage,renamePolicyTagList)trjExpensify commentedon Oct 29, 2026
Backend bug or not, I think it's still related to this new feature of being allowed to append a tag list alongside accounting imported ones. So we should resolve it before calling this feature release "done". @yuwenmemon do you agree with that, and are you or do you have someone looking into #105001?