Sample output from the Proactive System Health Review prompt in the Sonar AI Prompt Library, run against a NetSuite test account. Every name and number here is test data. Back to the post · The library

🩺 NetSuite Proactive Health Review

Small inefficiencies compound. This review finds the drag before it becomes a failure.
Account TD3095666 (Production, OneWorld)
Run date 2026-08-08
Run by Burt Brocus Β· Administrator
Method Read-only Β· live SuiteQL evidence

Health Scorecard

D
Script Hygiene
C
Customization
Cβˆ’
Workflow Debt
B+
Data Quality
D
Period Discipline
C
Security & Access
B
File Cabinet
n/a
Saved Searches

Executive Summary β€” Top 5 Risks

Critical
1,254 errors / 30 days
One script has failed on every run for a month.

customscript_print_list_sync_sheduler (id 1620) throws AUTH_ERROR β€” "The configured password API key is invalid." Biggest quick win: fix the key or disable it. ~15 minutes.

Critical
6 Administrators β€” 4 external domains
Admin access held by outside parties.

Role 3 includes accounts on anchorgroup.tech, netsuite.com and oracle.com. If those engagements ended, this is the account's top security exposure.

High
12 periods open since Sep 2025
No functioning month-end close.

Every monthly period from Sep 2025 through Aug 2026 is open and unlocked β€” prior-period numbers can silently change at any time.

High
4 workflows stuck in TESTING
Silent process no-ops.

TESTING workflows execute only for their owner β€” for everyone else the process (incl. NCR β€” Create Rework WO) silently does nothing.

Medium
638 SuiteScript 1.0 scripts (28%)
Deprecated-API technical debt.

Plus 91 scripts with zero deployments and 326 with only disabled deployments β€” a large dead-code surface that slows every audit and upgrade.

1Script & Automation Hygiene β€” Grade D

Error volume by script β€” last 30 days

Print List Sync Scheduler
1,254
Bin-lock delete scheduler
157
Sonar AI
23
Account Warmer Starter
18
Account Warmer Creator
18
Historic Order Guide MR
12
RM Rebate Status Update
12
PackShip IF Print Format
9

Script 1620 alone is ~83% of all error log volume β€” roughly 40 failures per day, every day.

SuiteScript API version across 2,282 active scripts

2,282 active scripts
SuiteScript 2.1 β€” 1,179 (51%)
SuiteScript 2.0 β€” 465 (21%)
SuiteScript 1.0 β€” 638 (28%) ⚠ deprecated

SS1.0 concentration: 308 Suitelets, 99 client scripts, 89 user events, 62 scheduled, 37 RESTlets.

SeverityFindingEvidenceRecommended actionEffort
CriticalPrint List Sync Scheduler failing continuously with AUTH_ERRORcustomscript_print_list_sync_sheduler id 1620 Β· 1,254 errors/30d Β· "configured password API key is invalid"Rotate/fix the print-service API key, or disable the deployment if retiredS
HighWMS bin-lock delete scheduler erroring repeatedlycustomscript_wmsse_binlocks_del_sch id 1109 Β· 157 errors/30dReview bin-lock cleanup config; escalate to SuiteApp vendor if bundle-ownedM
High638 active SuiteScript 1.0 scripts (28%)API-version rollup from script tableInventory custom (non-bundle) SS1.0 scripts; plan 2.1 migrationL
MediumDead code: 91 scripts with zero deployments; 326 with only disabled deploymentsscript βŸ• scriptdeployment, isinactive=FMark inactive / archive to shrink audit surfaceM
Medium6 additional recurring error sources (9–23 errors each)ids 7364, 6865, 6864, 1340, 5784, 5524Triage each via execution-log detail; fix or silence expected errorsM

2Customization Sprawl β€” Grade C

Custom field footprint by category

Transaction body fields
264
Transaction column fields
119
Item fields
117
Entity fields
71
Workflow / event / other
94

655 custom record types exist; only 5 are inactive. The vast majority are bundle-installed (Quality Management, Advanced Manufacturing/iQity, Fixed Assets, Electronic Payments, WMS). Visible generational duplication: legacy "QMS" workflows/records coexist with the "QM" Enhanced SuiteApp β€” one generation is probably retired but still installed and executing.

πŸ“Œ Recommended follow-up: a dedicated per-field usage audit (sample whether each custom field has been populated in the last 12 months) β€” deferred from this pass for scope.

3Workflow & Process Debt β€” Grade Cβˆ’

SeverityFindingWorkflowsAction
HighStuck in TESTING β€” executes only for the owner; a silent no-op for all other usersid 32 NCR β€” Create Rework WO Β· id 38 PO Form Default for Outsourced Mfg Β· ids 52, 152 SuiteSuccess translationsRelease to production if the business depends on them; delete if abandoned
MediumNot Initiating (dormant approval routing)id 4 Vendor Bill Approval Routing Β· id 5 Invoice Approval Workflow (12)Confirm intentional; delete if the approval process moved elsewhere
Medium14 of 29 active workflows run as AdminCustom (non-bundle): ids 20, 32, 37, 38Review custom workflows for least-privilege execution

4Data Quality & Operational Backlog β€” Grade B+

Medium
15 / 228 open SOs aged > 30 days
$61,372.26 in aged open orders.

Oldest open sales order dates to 2025-12-01. Review pending-fulfillment backlog; close or cancel dead orders.

Medium
16% / 22% of 331 active customers
Master-data gaps.

53 customers missing payment terms (billing risk), 74 missing email (blocks dunning & comms). Backfill via CSV import.

Healthy
0 duplicates found
Clean master data elsewhere.

No duplicate customers (by email or normalized name), no inactive items on open SOs, only 1 vendor bill pending approval, no stale estimates > 90 days.

5Financial Period Discipline β€” Grade D

Open, unlocked monthly periods (ids 200–216)

Sep
2025
Oct
2025
Nov
2025
Dec
2025
Jan
2026
Feb
2026
Mar
2026
Apr
2026
May
2026
Jun
2026
Jul
2026
Aug
2026
(current)

All 12 periods: closed = F, aplocked = F, arlocked = F. Prior-year financials can be altered at any time by any user with posting rights.

Recommendation: establish a month-end close cadence β€” lock AP/AR first, then close periods through at least Q1 2026.

ℹ️ A backdating check flagged 13,884 postings created 45+ days after their period ended β€” but the creation timestamps post-date today (Sep–Dec 2026), indicating demo/seed-data loading, not user backdating. Disregard until routine closes are in place, then re-run.

6Security & Access Governance β€” Grade C

Administrator role (id 3) β€” 6 holders

UserEmail domainFlag
Burt Brocus (120)me.comInternal
Kathryn Glass (βˆ’5)anchorgroup.techExternal
SDG Manila (1392)netsuite.comExternal
Alan Jenkins (1609)oracle.comExternal
Eduardo Soto (1671)netsuite.comExternal
Michael Farina (1697)netsuite.comExternal

Access posture

Admins (target ≀ 3)
6
External-domain admins
4
Workflows run-as-admin
14/29
Inactive employees w/ access
0 βœ“

Long tail of single-user specialized roles is a healthy least-privilege pattern.

βœ… No inactive employees retain login access (giveaccess='T' AND isinactive='T' β†’ 0 rows).

Recommendation: confirm each external-domain admin engagement is still active; remove or downgrade departed consultants. Target ≀ 2–3 Administrators.

7File Cabinet Health β€” Grade B  Β·  8Saved Searches β€” n/a

File cabinet by type (top, by size)

JavaScript (6,399 files)
882 MB
PDF (193)
321 MB
PowerPoint (21)
116 MB
Binary (243)
68 MB
All others (~1,354)
~76 MB

Dominated by bundle-installed script files. No urgent action; revisit if storage limits approach.

Saved search sprawl β€” not assessable this run

The saved-search list page returned zero rows to this session (a "Notice" page β€” likely a page-access restriction on this role/session). This is flagged honestly rather than guessed.

Action: re-run from an Administrator UI session, or grant search-list page access, then fold results into the next review.

30 / 60 / 90-Day Remediation Roadmap

πŸ“… Days 1–30 β€” Quick wins

  • Fix or disable script 1620's API key (kills 83% of error volume)
  • Confirm & prune the 4 external-domain Administrator accounts
  • Release-or-delete the 4 TESTING workflows
  • Close + lock accounting periods through Q1 2026
  • Triage script 1109 (WMS bin-lock scheduler)

πŸ“… Days 31–60 β€” Cleanup

  • Backfill customer terms (53) and emails (74) via CSV import
  • Work the 15 aged open sales orders ($61K)
  • Archive 91 undeployed + 326 disabled-only scripts
  • Re-run the saved-search audit from an admin UI session

πŸ“… Days 61–90 β€” Structural

  • SS 1.0 β†’ 2.1 migration plan for custom scripts
  • Custom-field 12-month usage audit
  • Bundle rationalization (QMS legacy vs QM Enhanced, unused SuiteApps)
  • Re-run this full review; diff against the 2026-08-08 baseline CSV
How this review was produced: read-only live SuiteQL queries against script, scriptdeployment, scriptnote, customfield, customrecordtype, workflow, transaction, customer, accountingperiod, employeerolesforsearch, employee, and file. Every finding cites real internal ids and scriptids. No records were modified. Keep the companion CSV (ns-proactive-review-2026-08-08.csv) as the baseline for delta tracking on the next run.