[No QA] Add Expensify Classic NetSuite troubleshooting docs#84812
[No QA] Add Expensify Classic NetSuite troubleshooting docs#84812stephanieelliott merged 1 commit intomainfrom
Conversation
HelpDot Documentation ReviewOverall AssessmentThis PR adds 87 new markdown files for Expensify Classic NetSuite troubleshooting documentation, organized across four error categories (Authentication-and-Login-errors, Connection-errors, Export-Errors, Sync-Errors) plus a general FAQ. The documentation is well-structured with a consistent template and covers a wide range of NetSuite error codes. The writing is clear and action-oriented. However, there is one critical structural issue — significant content duplication across categories — and a few recurring patterns worth addressing. Scores Summary
Key FindingsCritical Issue — Duplicate Files Across Categories Multiple error codes have identical (or near-identical) files placed in more than one category directory. For example:
This results in approximately 20-25 duplicate files out of 87 total. Each error code should live in only one canonical location. Duplicates create maintenance burden (updates must be applied to all copies), confuse search/AI systems, and may lead to inconsistencies over time. The few minor wording differences between copies of NS0565 and NS0739 already demonstrate this risk. Positive Aspects
Areas for Improvement
Recommendations
Files ReviewedAll 87 files were reviewed. Summary by category:
After removing duplicates, the effective unique article count is approximately 62-65 files, not 87. This review was generated by the HelpDot Summary Reviewer. |
|
|
||
| ## How to Fix the NS0109 Sync Error | ||
|
|
||
| ### Step One: Confirm NetSuite Admin Credentials |
There was a problem hiding this comment.
Heading level violation: ### headings are too deep for HelpDot articles. Only # (article title) and ## (sections) should be used. This pattern appears across all 87 files in this PR -- every ### Step One, ### Step Two, ### Option One, etc. should be changed to ##.
For example:
| ### Step One: Confirm NetSuite Admin Credentials | |
| ## Step One: Confirm NetSuite Admin Credentials |
| 4. Click **Accounting**. | ||
| 5. Open the NetSuite connection settings. | ||
| 6. Enter the updated admin credentials or new access token. | ||
| 7. Save the changes. |
There was a problem hiding this comment.
Button label violation (Expensify style): Per Expensify documentation standards, the final action in a flow should use "Confirm" rather than "Save." This file uses Save the changes at the end of a configuration flow (line 63). This pattern repeats across nearly all 87 files in this PR -- look for "Save the changes", "Save your changes", "Save the form", and "Click Save" as the last step in numbered flows.
Consider replacing with "Confirm" or removing the explicit save step if the platform auto-saves.
|
|
||
| #### List Permissions | ||
|
|
||
| | Permission | Level | |
There was a problem hiding this comment.
Heading level violation: #### headings are not permitted in HelpDot articles. Only # and ## should be used. This file uses #### for "List Permissions" and "Setup Permissions" (lines 57 and 89). Consider restructuring -- either promote these to ## headings or remove the heading and use bold text instead.
| | Permission | Level | | |
| ## List Permissions |
| # How to Fix NS0005 for Vendor Bill Exports | ||
|
|
||
| If you are exporting as a **Vendor Bill**: | ||
|
|
There was a problem hiding this comment.
Heading level violation: Using # (H1) for body section headings creates multiple H1s in the document. Only the article title should use #. This line and line 72 (# How to Fix NS0005 for Journal Entry or Expense Report Exports) should both use ## instead. This same pattern appears in NS0885-Export-Error.md (lines 22, 35, 73, 113) and NS0012-Export-Error.md (line 62).
| ## How to Fix NS0005 for Vendor Bill Exports |
| # How to Fix NS0005 for Journal Entry or Expense Report Exports | ||
|
|
||
| If you are exporting as a **Journal Entry** or **Expense Report**: | ||
|
|
There was a problem hiding this comment.
Heading level violation: Same issue as line 36 -- this should be ## not #. Only the article title and FAQ heading should use #.
| ## How to Fix NS0005 for Journal Entry or Expense Report Exports |
|
|
||
| # Why the NS0885 Export Error Happens in NetSuite | ||
|
|
||
| The NS0885 error occurs when: |
There was a problem hiding this comment.
Heading level violation: # Why the NS0885 Export Error Happens in NetSuite uses H1, but only the article title should be H1. This file has multiple H1 misuses at lines 22, 35, 73, and 113. All section headings should use ## instead.
| The NS0885 error occurs when: | |
| ## Why the NS0885 Export Error Happens in NetSuite |
| 4. Click **Save**. | ||
|
|
||
| --- | ||
|
|
There was a problem hiding this comment.
FAQ structure violation: The "# Still Need Help?" heading uses # (H1), but this is not the FAQ heading. If this is a closing section, it should use ## to maintain proper hierarchy. Only # FAQ should use H1 within the body.
| ## Still Need Help? |
| - Automatic export is paused until the issue is resolved. | ||
|
|
||
| ### How to Resolve Automatic Export Errors | ||
|
|
There was a problem hiding this comment.
Heading level violation: ### How to Resolve Automatic Export Errors uses ###, which is too deep for HelpDot articles. This FAQ file uses ### subheadings throughout (lines 21, 42, 55, 81, 128, 139, 151, 161, 168, 175). All ### headings here should be promoted to ##.
| ## How to Resolve Automatic Export Errors |
|
|
||
| If you see the error: | ||
|
|
||
| NS0029: Unable to export this report due to an error. |
There was a problem hiding this comment.
Readability violation: The error message text (NS0029: Unable to export this report...) is rendered as a plain paragraph, making it hard to scan and distinguish from explanatory text. Consider formatting error messages as a blockquote or code block so they stand out visually. This pattern applies across all 87 files in this PR.
For example:
> NS0029: Unable to export this report due to an error.
|
|
||
| This means there is a connection issue between Expensify and NetSuite preventing the report from exporting. | ||
|
|
||
| --- |
There was a problem hiding this comment.
Readability violation: Excessive use of horizontal rules (---) between every section reduces scannability rather than improving it. Horizontal rules should be used sparingly for major section breaks, not between every heading. This pattern is consistent across all 87 files. Consider removing horizontal rules between subsections and keeping them only before the # FAQ section.
| If you see the error: | ||
|
|
||
| NS0921: Invalid subsidiary reference [X]. Please ensure the report, user, accounts, tags, and categories all use the subsidiary selected in the workspace. | ||
|
|
There was a problem hiding this comment.
Terminology violation: The error message text from NetSuite uses "user," which is acceptable when quoting the literal error. However, in Expensify documentation, "user" should generally be replaced with "member." Since this is a direct quote of the error text the system displays, it can stay, but be aware that if you paraphrase this elsewhere in the article, use "member" instead of "user."
| - The Supervisor is no longer a valid employee record. | ||
| - The Supervisor field references a user without proper permissions. | ||
|
|
||
| NetSuite requires a valid, active Supervisor for approval routing when exporting expense-related transactions. |
There was a problem hiding this comment.
Terminology note: "The Supervisor field references a user without proper permissions" -- while "user" here refers to a NetSuite user (not an Expensify concept), per Expensify style guidelines, consider rephrasing to avoid "user" where possible. For example: "The Supervisor field references someone without proper permissions" or "The Supervisor field references an employee without proper permissions."
|
|
||
| - EUR | ||
| - GBP | ||
| - USD |
There was a problem hiding this comment.
Heading level violation: # Additional Steps for Non-OneWorld Users uses H1, but should use ##. Only the article title and # FAQ should be H1. This creates a third H1 in the document (after the title and FAQ).
| - USD | |
| ## Additional Steps for Non-OneWorld Users |
| 5. Click **Edit export**. | ||
| 6. In the dropdown, select the correct NetSuite card account. | ||
| - Do not leave it set to **Default Card**. | ||
| 7. Click **Save**. |
There was a problem hiding this comment.
Button label violation (Expensify style): Line 62 reads 7. Click **Save**. as the final step in a configuration flow. Per Expensify documentation standards, use "Confirm" instead of "Save" at the end of flows. This specific pattern (Click **Save**) appears in approximately 30 files across this PR. A find-and-replace for Click **Save** to Click **Confirm** at the end of numbered steps would address all instances.
| The resolution depends on the specific element listed in the error. | ||
|
|
||
| --- | ||
|
|
There was a problem hiding this comment.
Heading level violation: # General Fix for Most NS0056 Errors uses H1, but should be ##. This file has multiple H1 misuses at lines 42, 67, and 170. Only the article title and # FAQ should use H1.
| ## General Fix for Most NS0056 Errors |
| 2. Select **Workspaces**. | ||
| 3. Select your Workspace. | ||
| 4. Click **Accounting**. | ||
| 5. Click **Sync**. |
There was a problem hiding this comment.
Heading level violation: # Additional Fixes by Element uses H1, but should use ##. This creates a third H1 in the body (along with lines 42 and 170).
| 5. Click **Sync**. | |
| ## Additional Fixes by Element |
|
|
||
| # How to Fix the NS0196 Sync Error | ||
|
|
||
| ## Option One: Confirm Expensify Accounting Configuration |
There was a problem hiding this comment.
Heading level violation: # How to Fix the NS0196 Sync Error uses H1 for a body section. This should be ##. Only the article title and # FAQ should use H1. This same issue appears in a few other files (NS0005, NS0012, NS0056, NS0885).
| ## Option One: Confirm Expensify Accounting Configuration | |
| ## How to Fix the NS0196 Sync Error |
| - The role’s List permissions were modified after the token was created. | ||
| - The token is tied to a user-role combination that lacks access to Vendor records. | ||
|
|
||
| Access tokens in NetSuite are linked to both a **User** and a **Role**. If the role lacks required permissions, the sync will fail. |
There was a problem hiding this comment.
Terminology note: "The token is tied to a user-role combination that lacks access to Vendor records" -- the word "user" here refers to a NetSuite concept. While acceptable in context, per Expensify style consider rephrasing to "employee-role combination" or "account-role combination" to avoid the word "user" in Expensify documentation. This pattern also appears in NS0384 (line 29), NS0228 (multiple lines), and NS0844 (line 27).
|
|
||
| # How to Fix the NS0831 Export Error | ||
|
|
||
| ## Option One: Enable Cross-Subsidiary Customers/Projects in Expensify |
There was a problem hiding this comment.
Heading level violation: # How to Fix the NS0831 Export Error uses H1 for a body section heading. Only the article title and # FAQ should use H1. Use ## instead.
This same pattern occurs in these Export-Errors files: NS0005 (lines 36, 72), NS0012 (line 62), NS0056 (lines 42, 67), NS0885 (lines 22, 35, 73, 113), NS0831 (line 35). A project-wide search for ^# How to Fix and ^# Additional and ^# General and ^# Why the would catch all instances.
| ## Option One: Enable Cross-Subsidiary Customers/Projects in Expensify | |
| ## How to Fix the NS0831 Export Error |
| --- | ||
|
|
||
| # How to Fix NS0295 for Vendor Bill Exports | ||
|
|
There was a problem hiding this comment.
Heading level violation: # How to Fix NS0295 for Vendor Bill Exports (line 32) and # How to Fix NS0295 for Journal Entry or Expense Report Exports (line 62) both use H1. These should be ##. Only the article title and # FAQ should use H1.
This is part of a broader pattern across the PR. The following files all have body-section H1 misuses that need to be fixed to ##:
- NS0005 (lines 36, 72)
- NS0012 (line 62)
- NS0056 (lines 42, 67)
- NS0196 (line 33)
- NS0295 (lines 32, 62)
- NS0510 (line 33)
- NS0521 in Export-Errors (lines 30, 56)
- NS0521 in Sync-Errors (lines 30, 56)
- NS0581 (lines 34, 66)
- NS0831 (line 35)
- NS0885 (lines 22, 35, 73, 113)
| @@ -0,0 +1,78 @@ | |||
| --- | |||
There was a problem hiding this comment.
AI Readiness / Content duplication concern: This file is an exact duplicate of Connection-errors/NS0109-Sync-Error.md and Sync-Errors/NS0109-Sync-Error.md (identical content, same blob hash). Having the same article in 3 locations creates SEO/search confusion and maintenance burden.
The following files are exact triplicates across Authentication-and-Login-errors, Connection-errors, and Sync-Errors folders:
- NS0109-Sync-Error.md (3 identical copies)
- NS0593-Sync-Error.md (3 identical copies)
- NS0942-Sync-Error.md (3 identical copies)
And these are exact duplicates across 2 folders:
- NS0318-Sync-Error.md (2 identical copies: Auth + Sync-Errors)
- NS0739-Sync-Error.md (2 identical copies: Connection-errors + Sync-Errors)
Additionally, NS0565, NS0123, and NS0521 each appear in 3 folders with slightly different content (near-duplicates).
Consider placing each error code in a single canonical location and, if needed, using cross-references or redirects instead of duplicating files.
| --- | ||
|
|
||
| # How to Fix the NS0510 Export Error | ||
|
|
There was a problem hiding this comment.
Heading level violation: # How to Fix the NS0510 Export Error uses H1 for a body section. Should be ##. Note this file also exists with near-identical content in Authentication-and-Login-errors/NS0510-Export-Error.md -- consider consolidating to a single canonical location.
| ## How to Fix the NS0510 Export Error |
| # How to Fix NS0581 for Invoice Exports | ||
|
|
||
| If the export is intended to be an **Invoice**: | ||
|
|
There was a problem hiding this comment.
Heading level violation: Lines 34 (# How to Fix NS0581 for Invoice Exports) and 66 (# How to Fix NS0581 for Expense Report Exports) use H1 for body sections. These should be ##.
| ## How to Fix NS0581 for Invoice Exports |
| @@ -0,0 +1,96 @@ | |||
| --- | |||
There was a problem hiding this comment.
AI Readiness / File naming concern: This file is named NS0521-Sync-Error.md but is located in the Export-Errors/ folder. The filename says "Sync-Error" but the folder says "Export-Errors" -- this mismatch will confuse both readers and AI search systems. Either move this file to the Sync-Errors/ folder or rename it to match the folder context. Note that this same error code also appears in Connection-errors/NS0521-Sync-Error.md and Sync-Errors/NS0521-Sync-Error.md with slightly different content.
|
|
||
| --- | ||
|
|
||
| # How to Fix NS0521 for OneWorld Accounts |
There was a problem hiding this comment.
Heading level violation: # How to Fix NS0521 for OneWorld Accounts (line 30) and # How to Fix NS0521 for Non-OneWorld Accounts (line 56) both use H1 for body sections. These should be ##.
| # How to Fix NS0521 for OneWorld Accounts | |
| ## How to Fix NS0521 for OneWorld Accounts |
|
|
||
| 1. Log in to **NetSuite** as an Administrator. | ||
| 2. Go to **Lists**. | ||
| 3. Select **Employees**. |
There was a problem hiding this comment.
Heading level violation: ### Step One: Confirm the Employee Record in NetSuite uses ###, which is too deep for HelpDot. This should be ##. This is a systematic issue across all 87 files -- every ### Step One, ### Step Two, ### Option One, ### Option Two, etc. should be ##.
| 3. Select **Employees**. | |
| ## Step One: Confirm the Employee Record in NetSuite |
|
|
||
| ## How to Fix the NS0469 Sync Error | ||
|
|
||
| ### Step One: Enable Multi-Currency in NetSuite |
There was a problem hiding this comment.
Heading level violation: ### Step One uses ###, which is too deep per HelpDot standards. Use ## instead. This applies to all ### Step and ### Option headings across all Sync-Errors files as well.
| ### Step One: Enable Multi-Currency in NetSuite | |
| ## Step One: Confirm the Token Is Assigned to the Expensify Integration Role |
|
|
||
| #### Setup Permissions | ||
|
|
||
| | Permission | Level | |
There was a problem hiding this comment.
Heading level violation: #### Setup Permissions uses ####, which is not permitted in HelpDot articles. Use ## instead, consistent with the fix needed on line 57.
| | Permission | Level | | |
| ## Setup Permissions |
|
|
||
| # How to Fix NS0885 for Reimbursable Exports | ||
|
|
||
| ## If Exporting as an Expense Report |
There was a problem hiding this comment.
Heading level violation: # How to Fix NS0885 for Reimbursable Exports uses H1. This file has 4 body-section H1 misuses total (lines 22, 35, 73, 113). All should be ##.
| ## If Exporting as an Expense Report | |
| ## How to Fix NS0885 for Reimbursable Exports |
| 5. Open the NetSuite connection settings. | ||
| 6. Enter the updated admin credentials or new access token. | ||
| 7. Save the changes. | ||
| 8. Click **Sync now**. |
There was a problem hiding this comment.
Expensify style / consistency violation: This line uses Click **Sync now** while the vast majority of files (70+) use Click **Sync**. A few other files also use inconsistent variants: Click **Sync Now** (capitalized differently). Pick one label and use it consistently across all 87 files. The most common pattern in this PR is Click **Sync**.
Files using the variant Sync now or Sync Now:
- Authentication-and-Login-errors/NS0109-Sync-Error.md (line 64)
- Connection-errors/NS0109-Sync-Error.md (line 64)
- Sync-Errors/NS0109-Sync-Error.md (line 64)
- Export-Errors/NS0077-Export-Error.md (line 39)
- NetSuite-FAQ.md (line 194)
- Sync-Errors/NS0394-Sync-Error.md (lines 57, 68)
|
|
||
| NS0033: One or more recipients are not valid. Please reach out to NetSuite support for additional guidance. | ||
|
|
||
| This means NetSuite has rejected the export due to an invalid recipient configuration. |
There was a problem hiding this comment.
Readability / scannability note: Every article in this PR follows the exact same sentence pattern: "This means [explanation]." While consistent, the repeated "This means..." opener across all 87 files reads as formulaic. Consider varying the phrasing occasionally for a more natural, conversational tone that aligns with Expensify's casual-yet-professional voice. For example, some alternatives:
- "NetSuite has rejected the export because..."
- "The export failed because..."
- "This happens when..."
This is a low-priority suggestion but would improve the overall reading experience.
|
@MelvinBot how can I fixed the failed Verify signed commit test |
|
The To fix this, you'll need to set up commit signing and then replace the unsigned commit. Here's how: 1. Set up GPG signing (if you haven't already)# Check if you already have a GPG key
gpg --list-secret-keys --keyid-format=long
# If no key exists, generate one
gpg --full-generate-key
# Choose RSA, 4096 bits, and use the same email as your GitHub account
# Get your key ID
gpg --list-secret-keys --keyid-format=long
# Look for the line like: sec rsa4096/XXXXXXXXXXXXXXXX
# Copy the key ID (the part after rsa4096/)
# Export and add to GitHub
gpg --armor --export YOUR_KEY_ID
# Copy the output and add it at: GitHub → Settings → SSH and GPG keys → New GPG key
# Configure git to use your key
git config --global user.signingkey YOUR_KEY_ID
git config --global commit.gpgsign true2. Fix the unsigned commitSince the unsigned commit is already pushed, you'll need to create a new signed commit with the same changes. The simplest approach: # Make sure signing is configured (from step 1)
git config --global commit.gpgsign true
# Soft reset the unsigned commit, then re-commit with signing
git reset --soft HEAD~1
git commit -S -m "Your original commit message here"
git push --force-with-leaseAlternatively, if you have multiple commits and only one is unsigned, you can use an interactive rebase to re-sign just that commit — but the approach above is simpler for a single commit. Quick checkYou can verify a commit is signed with: git log --show-signature -1Once you push the newly signed commit, the |
- Articles: Authentication-and-Login-errors, Connection-errors, Export-Errors, Sync-Errors, NetSuite-FAQ (90 articles). - Hub pages: Troubleshooting and subsection hubs so articles are reachable from the help site. Part of Integration Errors Revamp (splitting PR #83106).
719501c to
727c98a
Compare
|
🚀 Deployed to staging by https://github.com/stephanieelliott in version: 9.3.36-0 🚀
|
|
🚀 Deployed to production by https://github.com/luacmartins in version: 9.3.36-10 🚀
|
Master project issue https://github.com/Expensify/Expensify/issues/469226
Breaking main PR into smaller batches: #83106
Creates .MD files for NetSuite integration error messages (Expensify Classic)