Sample output from the SOX / IPO Readiness 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
Confidential  ·  Internal Working Draft — Not for Distribution
Independent Systems Review

SOX & IPO Readiness Review

An evidence-based assessment of change management, access governance, segregation of duties, privileged and emergency access, integrations, managed bundles, and service-organization oversight for the NetSuite production environment.

Environment
NetSuite Production
Account TD3016323 (OneWorld)
Review Date
August 24, 2026
Method
Live introspection via SuiteQL;
read-only throughout
Prepared By
Sonar AI, with T. Dietrich
Framework Alignment
SOX 404 ITGC · COSO 2013
AICPA SOC 1 (CUEC mapping)
Version
1.0 — First full assessment
Every figure in this document was verified against live account data on the review date, or is explicitly marked as requiring manual verification. TD3016323

Contents
  1. iExecutive Summary & Readiness Scorecard§ i
  2. iiVerified Strengths§ ii
  3. iiiFindings Register§ iii
  4. 1Access Governance§ 1
  5. 2Segregation of Duties§ 2
  6. 3Privileged Access§ 3
  7. 4Emergency (Break-Glass) Access§ 4
  8. 5Change Management§ 5
  9. 6Managed Bundles§ 6
  10. 7Integrations & External Surface§ 7
  11. 8SOC Report Reviews & CUEC Mapping§ 8
  12. 9Remediation Roadmap§ 9
  13. 10Operating Rhythm — the Evidence Calendar§ 10
  14. AAppendix A — Methodology & Assumptions§ A
  15. BAppendix B — Reproduction Queries§ B
  16. CAppendix C — Disclosed Limitations & Dead Ends§ C
  17. DAppendix D — Source Materials§ D
Section i

Executive Summary

This review assessed the NetSuite production environment against the information-technology general controls (ITGC) an external auditor will test in a first-year SOX 404 engagement, and against the operational practices expected of a company preparing for public-market scrutiny. The assessment was conducted by direct, read-only interrogation of the live system — role and permission tables, login audit trails, script and deployment inventories, change-history records — rather than by questionnaire or interview.

The conclusion is straightforward: the account has a strong technical audit surface but operating practices that would not survive a SOX 404 walkthrough today. The audit trail exists; the discipline around it does not yet. None of the deficiencies identified are structural, and all are remediable within one to two quarters. Section 9 sequences that work.

12
Findings raised
(5 high · 6 medium · 1 low)
7 / 21
Active administrators
vs. total enabled users
769
Debug-level deployments
live in production
0
Inactive users with
login access enabled

The five most material gaps

#FindingSOX relevanceEffort
1Sixteen inactive employees retain Administrator role assignments; fifteen of twenty-one access-enabled users show no login in ninety days.Terminated / dormant access — the most common ITGC failureLow
2Seven active Administrators for twenty-one users (33%), with two admin identity pairs sharing a single email address.Privileged access; non-attributable actionsMedium
3Segregation-of-duties conflicts in finance roles, most notably vendor-master edit combined with vendor payment at Full level in the A/P Analyst roles.Fictitious-vendor exposure; first item auditors sampleMedium
4Change management is UI-driven and direct-in-production: 769 DEBUG deployments, 18 TESTING-status deployments live, a production "hotfix" folder, 91% of scripts undocumented.Absence of change-management ITGCHigh
5Key financial approval workflows are in NOTINITIATING status — documented controls that are not operating.Control documented but not operatingLow–Medium
A control that produces no evidence is indistinguishable from a control that does not exist. The unifying theme of this review is converting practices that already occur informally into practices that leave a record.
Section ii

Verified Strengths

Readiness reviews conventionally lead with deficiencies. The following affirmative findings were verified with the same rigor and materially reduce the remediation surface.

RefVerified strengthEvidence
S-1Two-factor authentication is enforced for UI login.Observed WrongSecondFactor failure events and loginchallenge request URIs in loginaudit.
S-2Zero inactive employees hold enabled login access.employee where giveaccess='T': all 21 rows active.
S-3No brute-force or credential-stuffing patterns.196 successes / 3 failures in 90 days; failures are isolated password and second-factor errors.
S-4No non-Administrator role combines user provisioning with transaction posting.rolepermissions scan for ADMI_MANAGEUSERS / ADMI_MANAGEROLES against posting permissions: zero rows.
S-5Payroll segregation is a non-issue.No active role grants payroll-run permission.
S-6No RESTlet is exposed without authentication.183 deployed RESTlets; zero with isonline='T'.
S-7A working SDF deployment pipeline exists.SDF context observed in systemnote during one ~25-day window.
S-8Script naming and folder discipline are reasonable.Consistent scriptid prefixes; organized File Cabinet structure.
Section iii

Findings Register

All findings carry stable identifiers for tracking through remediation. Severity reflects a combination of audit impact and exploitability; effort estimates assume the current team.

IDSeverityFindingSectionEffort
AG-1High16 inactive employees retain Administrator role assignments (reactivation risk).§ 1Low
AG-2High15 of 21 access-enabled users have zero logins in 90 days.§ 1Low
AG-3MediumRole TEST_DELETE_ME (id 2087) is active and assigned to a user.§ 1Low
SD-1HighA/P Analyst roles (1132, 1659) grant vendor-master Full and Pay Bills Full concurrently.§ 2Medium
SD-2MediumCFO / Controller-family roles stack journal posting, vendor payment, vendor-master edit, and bank reconciliation.§ 2Medium
PA-1HighTwo admin identity pairs share single email addresses; one audited admin email matches no listed identity.§ 3Low
PA-2High33% administrator ratio (7 of 21 users).§ 3Medium
EA-1MediumNo break-glass account or emergency-access procedure exists.§ 4Low
CM-1HighNo change-management SOP; changes are UI-driven and direct-in-production, including a named "hotfix" script.§ 5High
CM-2MediumProduction hygiene: 769 DEBUG deployments, 18 TESTING deployments live, 91% of scripts undocumented, financial approval workflows NOTINITIATING.§ 5Medium
IN-1Medium33 Suitelets deployed with anonymous (available-without-login) access.§ 7Medium
IN-2MediumChatGPT and Claude AI integration records enabled with no observed usage and no documented owner.§ 7Low
Section 1

Access Governance

Verified facts

Access-enabled users by 90-day login activity (n = 21)
Logged in within 90 days
6
Enabled, no login in 90 days
15
Fifteen dormant enabled accounts constitute finding AG-2. Dormancy is measured from loginaudit; the six active users are enumerated in § 3.

Findings

AG-1 (High). Sixteen inactive employees retain Administrator role assignments. Their access flag is off and the employees are inactive, but the role row persists — a single reactivation restores full administrative control. The population is largely legacy demonstration staff (e.g., A. Rymarquis, E. Goyena, P. Cutler, R. Rote, T. Cabral; predominantly @netsuite.com addresses). Under SOX this is a terminated-access deficiency regardless of the disabled flag, because the compensating state (inactive + no access) is not itself a controlled, attested condition.

AG-2 (High). Fifteen enabled accounts with no login in ninety days. Dormant enabled access is a standard ITGC deficiency: it widens the credential attack surface and demonstrates the absence of a periodic access review.

AG-3 (Medium). A role named TEST_DELETE_ME (internal id 2087) is active and assigned to a user — direct evidence that role lifecycle management is informal.

Operating practices to adopt

  1. Quarterly user access review (UAR). Export users × roles × last-login; route to functional owners for attestation; retain the signed evidence. The account's existing permissions-audit process definition can be productized into this quarterly run. The first review should be executed immediately to clear AG-1 through AG-3.
  2. Joiner / mover / leaver procedure. Access removal within 24 hours of termination; role re-approval on transfer; documented approval for every grant. NetSuite provides the evidence surface natively: systemnote on employee records and rolepermissions.datemodified / modifiedby.
Section 2

Segregation of Duties

The permission grants below were read directly from rolepermissions and represent conflicting duties concentrated in single roles. Levels: 1 View · 2 Create · 3 Edit · 4 Full.

Role (internal id)JournalPay BillsVendor MasterBank RecConflict pattern
CFO (41, standard · 1 user)4444All three conflict sets; 240 of 338 permissions at Full
MCP — Custom CFO (1984, custom · 1 user)4444All three conflict sets; 170 of 234 at Full
AI Companion Controller (2093, custom)4344JE + bank rec; vendor edit + payment
CEO (8, standard)4443Vendor edit + payment; JE + bank rec
EP Processor (1651, custom)441Journal Full + Pay Bills Full in one role
SS RT PRM — Controller (1664 · 2 users) / RT PRM — Controller (1136)3344JE + bank rec; vendor edit + payment
SS RT PRM — Accountant (1661)4224Journal Full + bank-rec Full
RT PRM — A/P Analyst (1132) / SS RT PRM — A/P Analyst (1659)344Vendor-master edit + vendor payment — fictitious-vendor exposure (SD-1)
Accountant (1) / Bookkeeper (6)3333All duties at Edit or above
Mitigating facts — verified
No non-Administrator role combines user provisioning (ADMI_MANAGEUSERS / ADMI_MANAGEROLES) with transaction posting, and no active role grants payroll execution. Sensitive permissions in circulation that warrant a named owner: ADMI_VIEW_PAYMENT_CARD_TOKENS, ADMI_VIEW_GENERAL_TOKENS, LIST_EMPLOYEESSN, LIST_VENDOR_ACH.

Remediation approach

  1. Define a formal SoD conflict matrix. Ten to fifteen rules suffice at this scale: vendor create/edit vs. vendor payment; journal posting vs. bank reconciliation; credit memo vs. cash receipt; item cost edit vs. inventory adjustment; user administration vs. any posting.
  2. Remediate by role redesign, not user shuffling. Split the A/P Analyst role into "A/P Entry" (bill entry, no vendor-master edit) and "Vendor Master Maintenance" (vendor edits, no payments).
  3. Accept and compensate where separation is impractical. For executive roles (CFO, CEO), formally accept the conflict and operate a monthly detective control — a documented review of journals and vendor-master changes made by those users. External auditors routinely accept well-evidenced compensating controls in small teams; what they do not accept is silence.
  4. Re-scan quarterly using the queries in Appendix B and retain the diff as evidence of a functioning monitoring control.
Section 3

Privileged Access

Seven identities hold active Administrator access: A. Traynor (141), B. Morgan (149), C. Schmitz (3900), J. Bailey (3871), K. Glass (−5), T. Dietrich (158), T. Dietrich (3894).

Administrator-role logins by email — trailing 180 days
timdietrich@me.com
423
tim@suitestep.com
126
partner-admin@example.com
43
partner-admin@example.com
12
partner-admin@example.com
7
Source: loginaudit, role = 3, grouped by email address. Note that partner-admin@example.com does not correspond to any of the seven listed admin identities — see PA-1.

Findings

PA-1 (High). Two admin identity pairs share a single mailbox (K. Glass and C. Schmitz → partner-admin@example.com; A. Traynor and B. Morgan → partner-admin@example.com). Shared mailboxes on privileged identities break attribution: an auditor cannot tie an administrative action to a person, which undermines every downstream control that relies on the audit trail. Additionally, partner-admin@example.com appears in the admin login audit but matches no listed admin identity — this must be reconciled.

PA-2 (High). A 33% administrator ratio. The enterprise norm is two to three named administrators plus a sealed break-glass account (§ 4).

PA-3 (Medium, folded into PA-2 remediation). Day-to-day work is being performed under the Administrator role (549 admin sessions across the two primary identities in 180 days). Routine work belongs in scoped roles; administrator sessions should be rare, purposeful, and individually explainable.

Operating practices

  1. Reduce to two or three named administrators; migrate the remainder to purpose-built roles (after § 2 remediation, the Controller-family roles cover most finance needs).
  2. One person, one identity, one unique email — no exceptions on access-enabled accounts.
  3. Establish a scoped "IT Operations" role for routine platform work, reserving Administrator for genuinely administrative tasks.
  4. Monitor monthly: loginaudit filtered to role 3. Every administrator session should have an explanation; most months, the correct count is near zero.
Section 4

Emergency (Break-Glass) Access

Current state (EA-1, Medium): no break-glass account exists — no employee record matches emergency-access naming patterns, and no procedure is documented. In practice, "emergency access" today means one of seven administrators logs in, which is indistinguishable from routine use and therefore provides neither control nor evidence.

Recommended design

  1. Provision a dedicated employee record ("Emergency Access — Break Glass") holding the Administrator role with login access disabled by default and credentials sealed under dual control in the password vault.
  2. Activate only upon documented approval by a named approver, with the reason recorded; deactivate within 24–72 hours.
  3. Review every action taken during the activation window (systemnote and loginaudit filtered to the break-glass user id) and file the review.
  4. Test twice a year and retain the test evidence. Auditors ask for proof the procedure works, not merely that it is written down.
Design note
Once the break-glass account exists, the administrator-reduction target in § 3 becomes safe to execute: the organization no longer needs standing admin breadth as informal insurance against lockout.
Section 5

Change Management

Verified facts

Change events by channel — trailing 365 days (systemnote.context)
Interactive UI (UIF) Workflow (SWF) Scripted (SCH·MPR·SLT·RST) SDF pipeline Other
Proportions are indicative (channel mix), drawn from systemnote context aggregates. The emerald segment — controlled, pipeline-based change — is the segment that should grow; the objective state inverts this chart. Absolute per-object velocity counts were invalidated by a mass-touch event circa 2026-08-12 (Appendix C).

Findings and operating practices

CM-1 (High) — Adopt a change-management SOP. Every production customization change requires: a request record, an approver who is not the developer, testing evidence from sandbox, and a deployment record. At this team size, a lightweight change register (a custom record type suffices) is adequate — the control is the discipline, not the tooling. The register must reconcile to systemnote; that reconciliation, performed monthly, is itself the detective control that proves completeness.

CM-2 — Standardize on SDF / SuiteCloud CLI with git as the only path for script and object changes. The single verified SDF window proves the pipeline already works. Git history plus pull-request approvals then generate change-control evidence as a by-product of normal work — the cheapest evidence a control can produce.

CM-3 — Production hygiene sweep (approximately one afternoon): reduce the 769 DEBUG deployments to ERROR or AUDIT level; release or remove the 18 TESTING deployments; migrate and retire the hotfix folder; add descriptions to all locally-owned scripts.

CM-4 — Reinstate the financial approval workflows, or formally retire them and document the replacement control. A documented-but-dormant automated control is a finding waiting to be written; the auditor's question — "was this control operating during the period?" — currently has an unfavorable answer.

CM-5 — Document the future-dated file timestamps so the anomaly carries a written explanation rather than surfacing unexplained during fieldwork.

Section 6

Managed Bundles

Verification limitation — disclosed
The bundleinstallation table is not query-exposed in this account, and the Installed Bundles page did not render for programmatic capture. A definitive bundle inventory therefore requires one manual step: Customization → SuiteBundler → Search & Install Bundles → List, exported. The footprint analysis below is verified; the installation-level detail (version, update policy, install date) is not.

The customization footprint — 437 custom record types, 151 custom lists, and a script population of roughly 1,100 — is majority bundle-owned. Attribution by scriptid prefix (the customsegment.frombundle column is empty account-wide and cannot be relied upon):

Bundle / suitePrefix evidenceFunction
Fixed Assets Management_FAM_ / _NCFAR_Asset lifecycle, depreciation — financially significant
Electronic Bank Payments_2663_ / _9572_ / _9997_ / _15529_Payment file generation — financially significant
SuiteTax Engine & Reporting_STE_ / _STR_Tax determination — financially significant
Ship Central / PackShip_PACKSHIP_Fulfillment operations
Manufacturing Mobile_MFGMOB_Shop-floor operations
Benchmark 360 · Cash 360 · Item 360_B360_ / _CASH360_ / _ITEM360_Analytics — candidates for retirement review
Atlas / SuiteSuccess starter content_ATLAS_Starter-edition records and demonstration content

Operating practices

  1. Bundle register: for each installed bundle — owner, business purpose, publisher, update policy (auto vs. managed), financial-statement relevance, last-reviewed date. Bundles are third-party code executing inside the financial system; the register treats them with vendor-management rigor.
  2. Update policy decided deliberately. Managed bundles can auto-update in production; each publisher-pushed update should land in the change register (§ 5) when it occurs. For financially significant bundles (FAM, EBP, SuiteTax), review release notes before or immediately after updates.
  3. Retirement review. Demo-era bundles (Atlas starter content, Benchmark 360) may no longer justify their attack surface. The account's existing bundle-impact-review process should be run per bundle ahead of an IPO-readiness cleanup.
Section 7

Integrations & External Surface

Verified inventory

Integration applicationStateCreatedObserved usage (90 d)
SuiteTalk RESTEnabled2026-08-16None
ChatGPTEnabled2026-08-31 †None
Claude AIEnabled2026-08-31 †None
SuiteCloud Development IntegrationEnabled2026-09-04 †None (SDF window predates)
Default Web Services IntegrationsEnabled2028-01-22 †None

† Future-dated creation timestamps as returned by integrationapp.createddate — the same timestamp anomaly noted in CM-5. Zero OAuth or token logins were observed in the 90-day login audit; the integration layer is configured but dormant.

External script surface

Findings

IN-1 (Medium-High). Thirty-three anonymous-access Suitelets are live production entry points requiring no authentication. Each requires individual review: business justification, data exposed, input validation. Any that cannot justify their exposure should be taken offline. The enumeration query is in Appendix B.

IN-2 (Medium). The ChatGPT and Claude AI integration records are enabled with no observed usage and no documented owner. Enabled-and-unused is the least defensible state — attack surface without accountability. Block them until an owner claims them, and document the organization's AI-access policy in either case; IPO diligence questionnaires now routinely probe AI data flows.

IN-3 (Medium). No dedicated service accounts exist. When integrations activate, each must run under a dedicated integration user holding a minimum-permission, web-services-only role (iswebserviceonlyrole='T') — never under a person's credentials, and never under Administrator.

Operating practices

Maintain an integration register (name → owner → purpose → auth method → token → role → review date); recertify tokens quarterly alongside the UAR; adopt a standing rule that no access token is ever minted against the Administrator role. Token inventory is not query-exposed (Appendix C) — the quarterly recertification uses Setup → Users/Roles → Access Tokens.

Section 8

SOC Report Reviews & CUEC Mapping

NetSuite is a SOX-relevant outsourced service organization; management's control set must include an annual, evidenced review of Oracle NetSuite's SOC 1 Type 2 report (and SOC 2 where relevant to security commitments).

  1. Obtain the current SOC 1 Type 2 via SuiteAnswers or the Oracle account team. Reports are issued on a roughly semi-annual cycle.
  2. Review and memorialize: the auditor's opinion (any qualification), exceptions noted and whether they touch controls the organization relies on (access, change management, availability, job scheduling), and the bridge letter covering the stub period between the report's coverage end and the fiscal year-end.
  3. Map the CUECs. The report enumerates Complementary User Entity Controls — controls NetSuite explicitly assumes the customer operates: user provisioning and deprovisioning, role configuration, authentication policy, data input controls. Each CUEC must map to a control this document establishes (§§ 1–7). This mapping is the artifact external auditors always request and companies most often lack.
  4. Repeat for every other financially relevant service organization — payroll processor, banking / EBP counterparties, tax engines, any middleware in the financial data path.
Typical NetSuite CUEC themeMapped control in this program
Customer manages user access and deprovisioningQuarterly UAR + JML procedure (§ 1)
Customer configures roles and permissions appropriatelySoD matrix + quarterly re-scan (§ 2)
Customer restricts administrative accessAdmin reduction + monthly role-3 login review (§ 3); break-glass procedure (§ 4)
Customer controls changes to configurations and customizationsChange SOP + SDF pipeline + register reconciliation (§ 5)
Customer manages third-party components and API accessBundle register (§ 6); integration register + token recertification (§ 7)
Customer enforces authentication policy2FA verified operating (S-1); monitored via login audit
Section 9

Remediation Roadmap

Phase 1 — This month · hygiene (hours, not weeks)

Phase 2 — This quarter · control design

Phase 3 — Next quarter · operating rhythm

What "good" looks like at IPO readiness: every quarter produces — without heroics — a signed access review, an SoD scan diff, a change register that reconciles to the system's own audit trail, a token recertification, and an annual SOC review memo. Predictability comes from the rhythm, not the tooling.
Section 10

Operating Rhythm — the Evidence Calendar

CadenceControl activityEvidence artifactOwner (proposed)
MonthlyAdministrator-session review (role 3 login audit)Reviewed login extract with annotationsController
MonthlyExecutive-role JE & vendor-change review (compensating control)Signed review memoController / CFO peer
MonthlyChange register ↔ systemnote reconciliationReconciliation worksheetIT / NetSuite admin
QuarterlyUser access review (users × roles × last login)Owner attestationsFunctional owners
QuarterlySoD re-scan (Appendix B queries)Scan output + diff vs. prior quarterIT / NetSuite admin
QuarterlyToken & integration recertificationRegister with review datesIT / NetSuite admin
Semi-annualBreak-glass procedure testTest record + session reviewCFO + IT
AnnualNetSuite SOC 1 review + CUEC mapping; other service organizationsSOC review memoController
AnnualBundle register review / retirement passUpdated registerIT / NetSuite admin
Appendix A

Methodology & Assumptions

Method

The review was executed entirely read-only on 2026-08-24 against the live production account, using SuiteQL queries, record-catalog introspection, and login/system audit tables. Three parallel research investigations covered (i) access governance and SoD, (ii) integrations and privileged access, and (iii) change management and customization footprint; their outputs were then independently spot-verified with direct queries before inclusion. No records, roles, permissions, scripts, or files were modified in the course of this review.

Assumptions — stated explicitly

  1. Bundle attribution by prefix. With bundleinstallation unavailable and customsegment.frombundle empty account-wide, bundle ownership of objects was attributed by scriptid prefix convention. Confidence is high for well-known suites (FAM, EBP, SuiteTax) but the manual bundle export (§ 6) remains the authoritative source.
  2. Dormancy window of 90 days was used for the stale-access analysis; organizations may reasonably choose 60 or 120. The finding survives any conventional threshold.
  3. Channel-mix proportions in the § 5 chart are indicative aggregates; exact per-object change velocity was unrecoverable due to a mass-touch event on object timestamps circa 2026-08-12 (Appendix C).
  4. Future-dated timestamps on files and integration records were treated as publisher/platform artifacts, not evidence of tampering; CM-5 recommends documenting them rather than ignoring them.
  5. Severity ratings reflect the reviewer's judgment of audit impact and exploitability at current scale; they are not a substitute for management's own risk assessment.
  6. 2FA enforcement was inferred from observed second-factor challenge failures and challenge URIs; no queryable per-user enrollment table exists, so universal enrollment should be confirmed in Setup → Users/Roles → Two-Factor Authentication.
Appendix B

Reproduction Queries

All queries below were verified working in this account on the review date. They are the substrate of the quarterly monitoring controls in § 10 — re-running them and retaining the diff is the control.

B.1 — Role assignments and enabled users

-- The role-assignment table (two columns only)
SELECT role, entity FROM employeerolesforsearch;

-- Users with enabled login access
SELECT id, entityid, email, giveaccess, isinactive
FROM employee
WHERE giveaccess = 'T';

B.2 — Segregation-of-duties scan

-- Sensitive grants at Edit level or above, per role
SELECT role, permkey, permlevel
FROM rolepermissions
WHERE permkey IN ('TRAN_JOURNALENTRY','TRAN_PAYBILLS','LIST_VENDOR',
                  'TRAN_BANKRECONCILIATION','ADMI_MANAGEUSERS','ADMI_MANAGEROLES',
                  'LIST_EMPLOYEESSN','LIST_VENDOR_ACH',
                  'ADMI_VIEW_PAYMENT_CARD_TOKENS','ADMI_VIEW_GENERAL_TOKENS')
  AND permlevel >= 3;

B.3 — Administrator session monitoring

-- Admin-role logins by email address
-- NOTE: COUNT(DISTINCT user) combined with date filters fails on loginaudit
-- in this account; group by emailaddress instead.
SELECT emailaddress, COUNT(*) AS logins
FROM loginaudit
WHERE role = 3
GROUP BY emailaddress
ORDER BY COUNT(*) DESC;

B.4 — Anonymous-access Suitelets (the 33)

SELECT s.name, s.scriptid, d.scriptid AS deploymentid
FROM scriptdeployment d
JOIN script s ON s.id = d.script
WHERE d.isdeployed = 'T'
  AND d.isonline  = 'T'
  AND s.scripttype = 'SCRIPTLET';

B.5 — Integration applications and production hygiene

-- Integration application inventory
SELECT id, name, state, createddate FROM integrationapp;

-- DEBUG-level deployments live in production
SELECT COUNT(*) FROM scriptdeployment
WHERE loglevel = 'DEBUG' AND isdeployed = 'T';

-- External deployment surface by script type
SELECT s.scripttype,
       COUNT(*) AS deployments,
       SUM(CASE WHEN d.isonline = 'T' THEN 1 ELSE 0 END) AS available_without_login
FROM scriptdeployment d
JOIN script s ON s.id = d.script
WHERE d.isdeployed = 'T'
  AND s.scripttype IN ('RESTLET','SCRIPTLET')
GROUP BY s.scripttype;
Appendix C

Disclosed Limitations & Dead Ends

In the interest of full transparency, the following could not be verified programmatically. Do not re-attempt these query paths; use the manual verification listed.

AttemptedResultManual verification path
bundleinstallation, bundle tables; Installed Bundles page scrapeNot query-exposed / page did not render programmaticallyCustomization → SuiteBundler → Search & Install Bundles → List (export)
tokenpassport, accesstoken, token tablesNot query-exposedSetup → Users/Roles → Access Tokens
integration tableInvalid search type — superseded by integrationapp (which lacks auth-flag columns)Integration record UI for auth-method detail
COUNT(DISTINCT user) with date filters on loginaudit"Invalid or unsupported search"Group by emailaddress instead (B.3)
Per-object change-velocity counts (custom fields, records, searches)Invalidated by a mass-touch event on timestamps circa 2026-08-12Prospective measurement once the change register (§ 5) operates
Per-user 2FA enrollment statusNo queryable table; enforcement inferred from challenge eventsSetup → Users/Roles → Two-Factor Authentication
Sandbox-to-production copy evidenceNo sandbox context in systemnote; provisioning settings not query-exposedSetup → Company → Sandbox Accounts
Appendix D

Source Materials

SourceRole in this review
Live SuiteQL interrogation of role, employee, employeerolesforsearch, rolepermissions, loginaudit, script, scriptdeployment, systemnote, integrationapp, workflow, customfield, customrecordtype, mediaitemfolderPrimary evidence — all counts and identifiers
Three parallel read-only research investigations (access governance & SoD; integrations & privileged access; change management & customization footprint), 2026-08-24Breadth survey; all headline figures independently re-verified before inclusion
Sonar account field notes for TD3016323 (schema quirks, bundle-prefix conventions, prior verified facts)Accelerant and cross-check; superseded by live data wherever they conflict
sox-ipo-readiness-review-2026-08-24.md (companion markdown edition, same date)Working-format predecessor of this document; content-identical findings
Branding & Formatting Guidelines — Precision SlateDesign system governing this document's typography, palette, and layout