Sample output from the NetSuite Instance Technical Documentation 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 Technical Documentation

Account TD3016323 · Production · OneWorld Compiled 2026-08-26 For administrator & implementation-partner onboarding
00Executive Summary 01Modules & Features 02Custom Records, Fields & Forms 03Workflows & Automation 04Roles & Permissions 05SuiteScript Inventory 06Integrations & Data Flow 07Dependencies & Risk Areas AAppendix — Script Files

00Executive Summary

TD3016323 is a OneWorld production account with four US subsidiaries (one elimination) operating in a single currency (USD). It models a retail/wholesale business: two retail stores, two distribution centers, a Miami site, 3PL and FBA locations. Full order-to-cash and procure-to-pay cycles are live — roughly 7,900 transactions across 40 types — with light manufacturing (work orders and assembly builds).

The customization footprint is dominated by managed bundles: SuiteSuccess/Atlas starter edition, Fixed Assets Management, Electronic Bank Payments, SuiteTax, Ship Central, Manufacturing Mobile, and the 360-family analytics apps. Of 437 custom record types and ~1,800 active script deployments, the genuinely local footprint is small and identifiable: a PromoStandards product-sourcing app, an in-house "Atlas" API/agent layer with token auth, webhooks and staged writes, a family of modern UI applications (CRM, POS, collections, journal entry, reporting), and the Sonar AI / Chartstone agent tooling.

Three findings deserve immediate attention: (1) 23 of ~50 employees hold the Administrator role, an access-control posture that should be tightened before any go-live hardening; (2) a vendor field CUSTENTITY_PS_PASSWORD stores a plaintext credential; (3) the installed invoice/vendor-bill approval workflows are not initiating — approvals are effectively inactive except one 3-way-match workflow. Everything else is well-structured, and this document maps each customization to its owner, dependencies, and upgrade risk.

01Modules & Features Enabled

1.1 Feature flags

AreaEnabledNotes
OneWorld / SubsidiariesYes4 subsidiaries: 1 Parent Company, 2 Subsidiary 1, 3 Subsidiary 2, 4 xElim (elimination). All US.
Multiple CurrenciesNoSingle currency, USD (id 1). Unusual for OneWorld — simplifies consolidation.
Inventory / Multi-LocationYes15 locations incl. quarantine and return-to-vendor sublocations per site.
Matrix ItemsYesApparel color/size matrices in active use (lists 24, 26).
Work Orders & AssembliesYes24 work orders, assembly builds present — light manufacturing.
CRM / Opportunities / EstimatesYesLow volume (22 opportunities, 10 estimates) — sales entry is mostly direct SO/cash sale.
Advanced PDF/HTML PrintingYes
SuiteTaxYesSuiteTax Engine + Tax Reporting bundles installed; three STE workflows released on transactions.

1.2 Installed SuiteApps & bundles

Attribution by scriptid prefix — the frombundle column is unreliable in this account (empty on customsegment, broken for NULL predicates on script).

SuiteApp / bundlePrefixWhat it adds here
SuiteSuccess / Atlas starter_ATLAS_*, SS RT PRMRole packs, saved dashboards, translation workflows, AI Companion prompt records, churn/credit customer workflows.
Fixed Assets Management_FAM_ / _NCFAR_Asset records, depreciation scripts (large script count).
Electronic Bank Payments_2663_ / _9572_ / _9997_ / _15529_Payment batches, EFT file formats; workflow "Update Batch" (id 1).
SuiteTax Engine + Reporting_STE_ / _STR_Tax lookup/compliance workflows 110–112 on transactions.
Ship Central_PACKSHIP_ / SHIPCENTRALWarehouse pack/ship mobile flows.
Manufacturing Mobile_MFGMOB_Shop-floor mobile roles & scripts.
Benchmark / Cash / Item 360_B360_ / _CASH360_ / _ITEM360_Analytics apps with their own service roles (1449, 1549, 1987).
Application Performance Mgmtcustomscript_nsapm_*~40 APM suitelets (NetSuite-managed).
NetSuite AI CompanionATLAS_AICOMP_*Prompt library, role map, usage rollup; weekly role-sync scheduled script (§3.4).

1.3 Organizational dimensions

Departments (10)

Sales · Product Development · Administration · Store Operations · Warehouse Operations · Support · Marketing · Merchandising · Production · eCommerce

Classes (5) — used as product categories

Apparel · Beauty · Home & Decor · Miscellaneous · Electronics

Locations (15)

01 San Francisco Store (1) · 02 New York Store (3) · 03 LA Distribution Center (5) · 04 Chicago DC (8) · 05 Miami (12) · 3PL (14) · FBA (15) · In Transit (16) · plus per-site Quarantine (2,4,6,9,13) and Return-to-Vendor (7,11).

Several locations share the same display name (e.g., multiple "Quarantine Area") — always disambiguate by internal id.

02Custom Records, Fields & Forms

2.1 Custom record types — 437 total, mostly bundle-owned

The bundle families in §1.2 own the large majority. The genuinely local record types are:

Record type (scriptid)IdPurposeRows
CUSTOMRECORD_PROMO_PROJECT—PromoStandards project header (in-house promo-products app)6
CUSTOMRECORD_PROMO_PRESENTATION—Client presentation container5
CUSTOMRECORD_PROMO_PRES_LINE—Presentation line; carries CUSTRECORDCUSTRECORD_PPL_PS_PAYLOAD (long-text PromoStandards payload)11
CUSTOMRECORD_DECORATION_PRICE—Decoration price tiers16
CUSTOMRECORD10521052"Demo Asset" — local demo recordsmall
CUSTOMRECORD_ATLAS_API_TOKEN2397Atlas API bearer tokens (local API layer, §6.2)2
CUSTOMRECORD_ATLAS_AUDIT2398Atlas audit events750
CUSTOMRECORD_ATLAS_WEBHOOK2404Outbound webhook subscriptions4
CUSTOMRECORD_ATLAS_EVENT2405Event queue for webhook dispatch13
CUSTOMRECORD_ATLAS_STAGED2406Agent writes awaiting human approval0
CUSTOMRECORD_ATLAS_TBCACHE2407Materialized trial-balance cache0
CUSTOMRECORD_OB_ORG_TREE—Org Browser tree (ownership unconfirmed — verify with owner)—
TDM_* family—Tooling test records — safe to ignore / candidates for cleanup—

Promo-family volumes (6 / 5 / 11 / 16 rows) indicate demo-scale usage, not production load.

2.2 Custom lists — 151 total

Locally notable: CUSTOMLIST24 Colors, CUSTOMLIST_CUSTOMLIST_SIZES (26) Sizes, CUSTOMLIST25/_MATTRESS Mattress, CUSTOMLIST1054 Document Type, CUSTOMLIST_RENEWAL_RISK, CUSTOMLIST_VB_MEMO_LIST, and the promo-app lists (CUSTOMLIST_DEC_TECHNIQUE, _PRES_STATE, _PRES_STYLE, _PROMO_PROJECT_STAGE, _PUBLISH_ITEM 514).

2.3 Custom fields

3,109 RECORD-type, 627 SCRIPT, 96 BODY, 85 WORKFLOW, 62 ENTITY, 42 COLUMN, 36 ITEM custom fields exist account-wide (source: customfield table); the vast majority are bundle-owned. Locally meaningful fields:

Entity fields

ScriptidLabel / typeNotes
CUSTENTITY_RENEWAL_RISKRenewal Risk · listSources CUSTOMLIST_RENEWAL_RISK; used by collections/CRM apps.
CUSTENTITY_PROMOSTANDARDS_ID + CUSTENTITY_PS_*PromoStandards vendor endpointsVendor-facing integration config for the promo app.
CUSTENTITY_PS_PASSWORDPlaintext credential · free textStores a vendor API password in cleartext. Remediate (§7).
CUSTENTITY_ATLAS_CHURN_DATE, _AVAIL_CREDIT, _CUSTOMER_INVOICE_EMAILAtlas customer fieldsMaintained by workflows 116 & 119 (§3.1).

Transaction body fields

ScriptidLabelNotes
CUSTBODY_INHAND_DATEIn-Hand DatePromo-app delivery commitment date.
CUSTBODY_ATLAS_JUSTIFICATION / _REQUEST_ID / _SOURCE / _SOURCE_ACTORAtlas write attributionStamped by the Atlas API layer on agent-originated writes — an audit convention worth preserving.
CUSTBODY_RAC_LINK_TO_CASE, _RAC_REPLACEMENT_FORRAC linkageOwnership unconfirmed — verify before change.

Column & item fields

ScriptidLabel / typeNotes
CUSTCOL1Color · list→24Legacy numeric scriptid; same Colors list as the item field.
CUSTCOL_ATLAS_PROMISE_DATEPromise DateDefaulted by workflow 118 on POs.
CUSTCOL_ATLAS_RETURN_REASONReturn Reason
CUSTITEMCUSTITEM_COLOR / _SIZE / _MATTRESSMulti-select → lists 24/26/25Matrix-item dimensions.
CUSTITEM_PUBLISH_ITEM, CUSTITEM_SUPPLIER_IMAGE_URL, CUSTITEMCUSTITEM_IMAGE_CODEPublishing / imageryPromo-app item publishing pipeline.

Bundle-vs-local attribution for a few generic-prefix fields (CUSTCOL_NS_USETAX, CUSTITEM_*_COUNT supply-planning counters, CUSTCOL_CALCULATE_ATB) is inferred, not verified.

2.4 Custom segments — 7, all active

IdScriptidNameOrigin
4 / 5 / 6CSEGMH_CSEG_1/2/3Merch Hierarchy L1 Department / L2 Category / L3 Sub-CategoryBundle (Merch Hierarchy)
104CSEG_ATLAS_COST_CTRCost CenterAtlas bundle
105CSEG_ATLAS_SLS_CHANSales ChannelAtlas bundle
204CSEG_CLIENT_TAGClient TagLocal (likely)
205CSEG_CONTACT_TAGContact TagLocal (likely)

Not queryable: the segment→record-type application mapping (customsegmentapplication is an invalid search type). Verify applied-to lists in the UI (Customization > Lists, Records & Fields > Custom Segments).

2.5 Custom forms

Not queryable via SuiteQL in this account — transactionform, entryform, and customform all fail as invalid search types. The form inventory (and form-to-role preferences) must be documented from the UI (Customization > Forms) or an SDF object export. This is flagged as a documentation gap rather than guessed.

03Workflows & Automation

3.1 SuiteFlow workflows — 17 defined, none inactive

Source: workflow table. States, transitions and actions are not queryable via SuiteQL (workflowstate not exposed) — per-state detail requires the workflow designer UI. Trigger data below is from the workflow header record.

IdNameScriptidStatusTrigger / recordOrigin
1Update Batchcustomworkflow_2663_update_batchReleasedView/update · EP payment batchEBP bundle
8Lock Client Audit Trail Recordcustomworkflow_8299_lock_cat_recordReleasedBefore loadBundle 116144
109SS RT PRM 3 Way Match VB Approvalcustomworkflow_3way_match_vb_approv_2ReleasedCreate + update · Vendor BillSuiteSuccess
110–112STE Compliance Text / Lookup / Rate Typecustomworkflow_ste_wf_*ReleasedCreate/update/before-submit · transactionsSuiteTax
1133 Way Match VB Approvalcustomworkflow_3way_match_vb_approval_prNot initiatingVendor BillBundle 240841
114Invoice Approval Workflowcustomworkflow_naw_iawNot initiatingCreate · InvoiceBundle 240841
115Vendor Bill Approval Routingcustomworkflow_vb_workflowNot initiatingVendor BillBundle 240841
116Available Credit Fieldcustomworkflow_atlas_available_creditReleasedBefore load · Customer → CUSTENTITY_ATLAS_AVAIL_CREDITAtlas
117Inventory Adjustment Reasoncustomworkflow_atlas_invadjNot initiatingCreate · Inv. AdjustmentAtlas
118Default Promise Datecustomworkflow_atlas_promise_date_dfltReleasedCreate/update · PO → CUSTCOL_ATLAS_PROMISE_DATEAtlas
119Set Churn Date on Customercustomworkflow_atlas_set_churn_dateReleasedAfter submit · Customer → CUSTENTITY_ATLAS_CHURN_DATEAtlas
120–121Set Field Values — PO / Invoicecustomworkflow_atlas_set_po / _setinvNot initiatingCreateAtlas
216FinWB Translationscustomworkflow_atlas_finwb_translationsReleasedScheduledAtlas
316Procurement Translationscustomworkflow_atlas_prowb_translationsTestingScheduledAtlas

Key finding: the only transaction-approval automation actually running is workflow 109 (3-way-match vendor-bill approval). The NetSuite Approvals Workflow bundle's invoice and vendor-bill routing workflows (113–115) are installed but Not Initiating — invoices and most vendor bills flow unapproved. Decide deliberately whether to activate or remove them.

3.2 SuiteFlow vs. SuiteScript split

Automation in this account is overwhelmingly SuiteScript-driven: 17 workflows vs. 1,843 active script deployments. Workflows handle field defaulting and bundle-internal locking; business applications, integrations, and analytics all live in script.

3.3 Active script deployments by type — 1,843 total

Map/Reduce402
Suitelet392
User Event369
Scheduled252
RESTlet183
Client170
Portlet18
Other57

Bundle install / SDF / SPA / dataset-builder / plug-in types aggregated as "Other". The vast majority are bundle-owned (FAM, EBP, SuiteTax, Ship Central, Mfg Mobile, APM, 360 apps).

3.4 Scheduled automation actually running

Only one non-bundle-core script holds an active schedule: customscript_atlas_aicomp_role_sync (status Scheduled) — the AI Companion's weekly role sync from aiprompt_role_import.csv; idempotent, add-only. All other local scheduled/MR scripts (customscript_atlas_materialize_tb, _atlas_bulk_tag, _atlas_aicomp_usage_rollup, customscript3248 Delete Item Line MR, _de_dept_hotfix_ss, _example_agent_1) are deployed but Not Scheduled — on-demand only. Scheduled workflows 216/316 handle SuiteSuccess workbook translations.

3.5 Saved searches & reports feeding automation

No workflow in the account uses a saved-search initiation condition (initsavedsearchcondition empty on all 17). The reporting/automation surface is instead SuiteQL-first: the Report Runner, Living Ledger, Fathom BI, and Atlas trial-balance apps all query SuiteQL directly rather than depending on saved searches — which reduces the classic "someone edited the saved search" fragility.

04Roles & Permissions

4.1 Inventory

109 roles (108 active): 30 standard, 79 custom. One inactive (customrole_atlas_admin_dash_pub, 1349). Custom roles cluster into:

GroupIdsAssigned?Notes
SuiteSuccess "RT PRM" pack1131–1145 (15)0 employeesAtlas-provisioned; entirely unused.
SuiteSuccess "SS RT PRM" pack1659–1673, 1878–1880, 1982 (19)Yes — primary working rolesCEO/CFO/Controller/Accountant/A-R Analyst etc.
Legacy demo41 CFO, 42/43 Retail Clerk41 assigned41 has 240 FULL-level permissions; 43 is web-services-only.
Integration / service1350, 1449, 1549, 1674, 1986, 1987, 2090, 21951986 assignedCash360/Item360/B360/SuiteTalk REST/Atlas Service/Sonar VBM; mostly ALL-subsidiary.
Mobile / WMS / Mfg1649–1658, 1774–17762 assignedOwn-subsidiary operator roles.
Misc / test1005 EFT, 1231/1232, 1348, 1677, 1881 FAM, 1983–1985 MCP, 2087–2094, 2193/2194ScatteredIncludes assigned "TEST_DELETE_ME" (2087) and smoketest (2088).

4.2 Elevated access

Administrator (role 3) is held by 23 of ~50 employees — Alex Rymarquis, Ann Traynor, Ben Morgan, Caleb Schmitz, Ephraim Goyena, Eric Nelson03, Hazel Alcoy, Jacob Bailey, Jef Sauco, Jenny Lunsford03, Kate Cabalar, Kathryn Glass (system id −5), Marc Ordinanza, Marcy Meinert, Pao Pao, Paolo Abutal, Philip Cutler, Ron Villanueva, Ryan Rote, Steph Azoulay, Tim Dietrich, Timothy Dietrich, Trisha Cabral. Reduce to a small named set and move daily work to the SuiteSuccess functional roles.

Admin-like grants inside custom roles (from rolepermissions, level FULL): role 2093 AI Companion Controller holds ADMI_ENABLEFEATURES, ADMI_CUSTOMSCRIPT, ADMI_MANAGE_OAUTH2, ADMI_PERIODOVERRIDE and MCP Server; roles 1987 and 1664 hold ADMI_ENABLEFEATURES + SuiteScript; roles 1231/1232/1671/1987 hold Bulk Manage Roles. Heaviest FULL counts: 41 CFO (240), 1984 MCP-Custom CFO (170), 1664 SS Controller (108), 1661 SS Accountant (97), 2093 (93).

4.3 Restrictions & anomalies

Not verified: employee-level global permission grants and per-role last-login usage (LoginAudit) — recommend a follow-up permissions-audit run (a permissions-audit process definition exists in this account's Sonar process library).

05SuiteScript Inventory

5.1 Shape of the estate

~1,120 script records (Suitelet 384, RESTlet 183, User Event 181, Map/Reduce 143, Client 101, Scheduled 97, others <20 each); ~35 are locally authored. The local estate divides into five families:

5.2 Local application families

FamilyScripts (scriptid)What it does
Atlas API layercustomscript_atlas_api (RESTlet), customscript_atlas_ui (Suitelet), MR dispatch/materialize/bulk-tag, cache-invalidate UEFunction-dispatched API over NetSuite reads/writes with its own bearer-token auth (token records), per-function permissions, audit logging to CUSTOMRECORD_ATLAS_AUDIT, staged (approval-gated) writes, webhook event dispatch, and a materialized trial-balance cache. Handlers live in lib/atlas-functions.module.js. Source: file 91077 header.
Modern UI appscustomscript_crm_app_sl / _crm_data_rl / _crm_portlet; customscript_pos_app / _pos_data / _pos_portlet; customscript_ws_app / _ws_data / _ws_share / _ws_portletSingle-page CRM, POS, and Workspace apps served as Suitelets with companion data RESTlets. POS creates customers, cash sales and cash refunds with hardcoded defaults: location 1, subsidiary 2, walk-in customer 3892, bank account 1; overrides shipping address for origin-based SuiteTax.
Finance & ops toolscustomscript_ar_collections, _collections_priority, _je_entry, _living_ledger, _report_runner_app (+ RESTlet), _sales_mgr_dashboard, _marginpulse_portlet, _cabinet_plusCollections worklists; modern JE-entry UI (hardcoded chart-of-accounts list — see §7); read-only SuiteQL financial reporting; a File Cabinet manager with versioning; sales dashboards.
AI / agent toolingcustomscript_sonar_ai, _sonar_mission_control_sl, _sonar_flux_radar_portlet, _fathom (testing), _cs_studio, _cs_toolkit, customscript3564 (SuiteQL Query Tool 2026)Sonar AI agent Suitelet; Fathom BI workbench; Chartstone Studio agent chat (LLM relay) and its Toolkit RESTlet — an RPC surface that can create roles, set permissions, assign roles, and CRUD records/fields/files (high-risk admin surface, §7).
Utility / misccustomscript_usr_ue_transaction, _cs_emp_change_notifier, _fetch_record_fields, _updater, _atb_sl_data_service, _atb_engine_restlet, _portletwarmer, customscript3248See per-script notes below.

5.3 Notable individual scripts

5.4 External calls from scripts

Script / fileDestinationPurpose
chartstone-studio.suitelet.js (90760)api.anthropic.com, Cohere via N/llm, chartstone.studio/verifyLLM relay for agent chat; HMAC license check.
SalesManagerDashboard.js (90756)api.openai.com, api.anthropic.comAI summaries with user-supplied key.
Atlas webhook dispatch (91094/91095)Configured webhook URLs — currently 4 subscriptions incl. a webhook.site test binOutbound event notifications.
Sonar AI / Fathomapi.anthropic.com (browser-side, user key)Second-opinion review / BI insights; keys never stored server-side.

Script execution logs (scriptnote) show zero HTTP/webhook/API error entries since 2026-06-01 — the outbound surface is quiet, not broken.

06Integrations & Data Flow

6.1 Integration applications (OAuth / TBA)

Not queryable: the integration, tokenpassport and accesstoken tables are not exposed to SuiteQL in this account. Enumerate registered integration applications in the UI: Setup > Integration > Manage Integrations. The existence of a "SuiteTalk REST" custom role (1986, assigned) and web-services-only roles (§4.3) indicates token-based access is in use.

6.2 The Atlas API layer (local, inbound + outbound)

The account's primary custom integration surface. customscript_atlas_api (deployment customdeploy_atlas_api, Released, audience restricted to roles 3 / 2089 / 2090) accepts NetSuite-TBA-authenticated calls, optionally further scoped by an Atlas bearer token (CUSTOMRECORD_ATLAS_API_TOKEN, 2 tokens on file). Writes can be staged to CUSTOMRECORD_ATLAS_STAGED for human approval; every call lands in CUSTOMRECORD_ATLAS_AUDIT (750 events). Outbound: 4 webhook subscriptions with 13 queued/processed events — one target is a webhook.site test bin (cleanup candidate). Agent-originated transactions are stamped with CUSTBODY_ATLAS_SOURCE / _SOURCE_ACTOR / _REQUEST_ID / _JUSTIFICATION.

6.3 RESTlet surface — 8 local endpoints, all Released

RESTletDeploymentAudience
customscript_atlas_apicustomdeploy_atlas_apiRoles 3, 2089, 2090
customscript_cs_toolkitcustomdeploy_cs_toolkit(blank — verify)
customscript_crm_data_rlcustomdeploy_crm_data_rl(blank — verify)
customscript_pos_datacustomdeploy_pos_data(blank — verify)
customscript_ws_datacustomdeploy_ws_data(blank — verify)
customscript_fetch_record_fieldscustomdeploy_fetch_record_fieldsAll roles
customscript_updatercustomdeploy_updaterAll roles
customscript_atb_engine_restletcustomdeploy_atb_engine_restletAll roles + 14/15/16/21

6.4 CSV imports

Not queryable: saved CSV import maps (csvimport invalid search type). Review in UI: Setup > Import/Export > Saved CSV Imports. The AI Companion role sync consumes aiprompt_role_import.csv on a weekly schedule (§3.4).

6.5 Core process flows

Quote-to-Cash

Opportunity22 records→ Estimate10→ Sales Order788→ Item Fulfillment752→ Invoice764→ Payment748→ Deposit49

Parallel retail path: Cash Sale (1,077) — the highest-volume transaction type — entered largely through the POS app (§5.2) against walk-in customer 3892, subsidiary 2, location 1. DCs take few/large orders (LA DC ≈ $6K average); stores take many/small (~$160–180 tickets). Estimate→SO lineage is traceable via nexttransactionlink (linktype='EstInvc'), though link rows are sparse — line-level createdfrom is the reliable join.

Procure-to-Pay

Purchase Order740→ Item Receipt727→ Vendor Bill1,017→ Vendor Payment1,002

Promise dates default via workflow 118; 3-way-match approval (workflow 109) is the only released approval gate. Electronic Bank Payments handles payment batching (workflow 1). Vendor bills outnumber POs — direct-billed expenses are common.

Record-to-Report

SubledgersO2C · P2P · FAM · WO/Build→ GL88 journals→ ConsolidationxElim sub 4→ ReportingReport Runner · Fathom · Atlas TB cache

Single-currency consolidation through elimination subsidiary 4 (xElim). Fixed Assets Management posts depreciation. Reporting is SuiteQL-first through the local tool family; the Atlas layer can materialize a trial-balance cache (CUSTOMRECORD_ATLAS_TBCACHE, currently empty) via customscript_atlas_materialize_tb.

6.6 Where data originates, transforms, and lands

OriginTransform / mechanismLands in
POS app (browser)customscript_pos_data RESTlet; hardcoded loc/sub/customer defaultsCash Sale, Cash Refund, Customer
CRM / Workspace apps_crm_data_rl / _ws_data RESTletsCRM records, transactions
External agents / integrationsAtlas API — token auth, optional staging, audit stampAny permitted record + ATLAS_AUDIT
NetSuite eventsAtlas event queue → MR dispatchOutbound webhooks (4 targets)
Employee record changes_cs_emp_change_notifier UEEmail to anchorgroup.tech (external)
AI Companion CSVWeekly scheduled role syncAI Companion role records

07Dependencies & Risk Areas

7.1 Cross-object dependency map

AutomationDepends onBreak impact
Workflow 116 (Available Credit)CUSTENTITY_ATLAS_AVAIL_CREDIT on CustomerField removal breaks customer before-load.
Workflow 119 (Churn Date)CUSTENTITY_ATLAS_CHURN_DATECustomer after-submit failure.
Workflow 118 (Promise Date)CUSTCOL_ATLAS_PROMISE_DATE on PO linesPO defaulting stops.
Atlas API attribution conventionCUSTBODY_ATLAS_SOURCE/_SOURCE_ACTOR/_REQUEST_ID/_JUSTIFICATIONLosing these fields removes agent-write auditability.
Matrix itemsLists 24 (Colors) / 26 (Sizes) / 25 (Mattress) + CUSTITEMCUSTITEM_* + CUSTCOL1List edits ripple into item matrices and historic transaction lines.
POS appHardcoded ids: location 1, subsidiary 2, customer 3892, bank account 1Inactivating any of these silently breaks POS sales entry.
JE Entry suiteletHardcoded chart-of-accounts listNew/renamed GL accounts won't appear until the script is edited.
Promo app4 custom records + CUSTENTITY_PS_* + item publishing fieldsSelf-contained; low blast radius.
AI Companion role syncaiprompt_role_import.csv in File CabinetMissing file = sync no-ops (add-only design limits damage).

7.2 Security-relevant findings

#FindingSeverityRecommendation
1CUSTENTITY_PS_PASSWORD stores a plaintext vendor credentialHighMove to N/crypto secrets or an API-secret record; purge field history.
223 Administrator holders (~46% of staff)HighReduce to 2–3; migrate users to SuiteSuccess functional roles.
3Chartstone Toolkit RESTlet can create roles / set permissions / assign roles; deployment audience is blankHighVerify effective audience; restrict to named admin roles or undeploy when idle.
4customscript_updater and customscript_fetch_record_fields RESTlets deployed to All RolesMediumRestrict audience; "Account Preload / Updater" with all-roles reach deserves review.
5Employee-change UE emails PII to an external domain (anchorgroup.tech)MediumConfirm business intent; parameterize the recipient.
6Atlas webhook pointing at a webhook.site test binMediumDelete the test subscription — it exfiltrates event payloads to a public bin.
7Role 2093 (AI Companion Controller) holds Enable Features, SuiteScript, OAuth2 management, Period OverrideMediumConfirm managed-app requirement; monitor assignees (currently informal).
8Assigned test roles: 2087 TEST_DELETE_ME, 2088 smoketest; 52 zero-assignee custom rolesLowInactivate; rerun a permissions audit after cleanup.

7.3 Upgrade & maintainability risks

7.4 Known schema quirks (verified, save future you the hours)

AAppendix — Script Files Referenced

File (File Cabinet path / id)Purpose
/SuiteScripts/sonar-ai.suitelet.js · 91212Sonar AI agent Suitelet (v1.7.0) — this tooling.
atlas-api.restlet.js · 91077 (folder 4825)Atlas API entry: auth, permission enforcement, audit, error envelope.
lib/atlas-functions.module.js · 91083Atlas API handler implementations (read/write/admin ops).
lib/atlas-tokens.module.js · 91082Atlas bearer-token validation.
atlas-ui.suitelet.js · 91078Atlas admin SPA (tokens, webhooks, staged writes, TB, dashboards).
atlas-dispatch.mapreduce.js · 91094 / atlas-webhooks.js · 91095Event-queue webhook dispatch.
atlas-materialize-tb.mapreduce.js · 91099Trial-balance cache materialization.
usr_ue_transaction.js · 24736 (folder 3141)UE on 15 transaction types — source access-blocked; logic undocumented.
cs_employee_change_notifier_ue.js · 91211Employee-change email notifier → external address.
chartstone-studio.suitelet.js · 90760Agent chat SPA; LLM relay (Anthropic/Cohere); license check.
chartstone-toolkit.restlet.js · 90725Admin RPC RESTlet (role/permission/record/file CRUD) — high-risk surface.
je_entry.suitelet.js · 90755Modern JE-entry UI (hardcoded COA).
sonar_living_ledger.js · 91328Read-only cash-flow visualization.
sonar_cabinet_plus_sl.js · 91329File Cabinet manager with versioning.
report-runner.suitelet.js · 90704 / report-runner.restlet.js · 90703SuiteQL financial-report API + UI (read-only).
SalesManagerDashboard.js · 90756Sales dashboard; calls OpenAI/Anthropic with user key.
fathom.suitelet.js · 91425Fathom BI workbench (grids, charts, KPI cards) — deployment in Testing.
sonar_flux_radar_portlet.js · 91334Flux Radar dashboard portlet.
ATB_SL_DataService.js · 15865 / ATBMainRestlet.js · 15863ATB gateways — bundle-protected, unreadable (folders 2792–2807).
scheduled_role_sync.js · 91219 (folder 4832)AI Companion weekly role sync — bundle-protected, unreadable.

Method: compiled 2026-08-26 by live introspection of account TD3016323 via SuiteQL (workflow, scriptdeployment, script, role, rolepermissions, employeerolesforsearch, customfield, customrecordtype, customsegment, transaction, scriptnote) and File Cabinet source reads. Items marked "not queryable" or "access-blocked" were verified to fail and are flagged rather than inferred. Counts are point-in-time. Assumptions: bundle attribution by scriptid prefix where frombundle is unreliable; a small number of generic-prefix fields have inferred ownership as noted in §2.3.

TD3016323 · NetSuite Technical Documentation