No accounting period ending after November 2021 has ever been closed or locked on my NetSuite test account. The 71 periods that were closed, January 2016 through November 2021, were closed in four bulk batches on four calendar days, a median of 748 days after the period ended. The shortest interval was 71 days. The longest was 1,417.
Every one of the 25 periods that hold the account's live transaction history is open to posting, with receivables, payables, and the general ledger all unlocked. The oldest unclosed period, December 2021, has been open for 1,708 days.
That's what the Record-to-Report Period Close Process Mining prompt found, and it's the third study in the series that went into the Sonar AI Prompt Library in September, after Order-to-Cash and Procure-to-Pay. If you're new to this, Sonar AI is an AI agent that runs inside NetSuite. Every prompt in the library is a playbook that I engineered and tested against live NetSuite data, and you run it inside your own account, against your own records. Nothing leaves the account, and nothing is written to it.
A Different Shape of Problem
The first two studies used documents as objects and the link table as edges. The close has a different shape. The case is the accounting period. The events are postings into the period, journal entries with their approval and reversal lineage, and lock or close actions on the period record itself. The prompt goes to the system notes table for that third kind of event.
On the test account, it found none. Zero system notes on any of the 168 period records. NetSuite records no note when a period is locked or closed here, and only the closed-on date survives. The Period Close Checklist has no SuiteQL surface at all. So the period lifecycle collapses to its recorded end state, and cycle time from period end to close is known for the 71 historical periods and undefined for the 57 open ones.
I want to dwell on this, because it's the point of the report. Every other process in the series had a recorded trail to mine. Record-to-report had a recorded state and almost no trail. The report builds a table of the evidence it went looking for, where it should have been, what it found, and what the absence prevents, and then it says plainly which of its numbers are measurements and which are absences. The absence of period system notes is a finding, and the report says so in its own footer.
The Journals
Setting aside the 48 synthetic "Beg Balance Entries" journals that the earlier posts in this series have covered, the account has 40 genuine journal entries, and the report classifies every one of them by purpose. Eight are capital injections totaling $680,000. Three are inventory reclassifications totaling $262,000, all dated September 1, all created the same day, none with a memo. Six are accrual-and-reversal pairs. Nine carry a "Test" memo or a sweep-test external ID, and three of those posted $755 of unreversed test entries into real receivables, cost of goods, and undeposited funds accounts in the current period.
Four journals totaling $10,316 sit in Pending Approval with no approver assigned. Two of them are in a period that ended 35 days before the run. Only one approval transition is observable anywhere in the system notes, and it was performed by the same administrator who entered the journal.
Half of the reversal pairs are invisible to a search on the reversal field. The three script-generated reversals set the memo and the external ID but never the system reversal link, so a field-based search finds three of six.
Who Touched What
I think that the actor matrix is the section most controllers would want to see first. Five identities touched the 40 journals. A negative internal ID that resolves to an employee name, which is how a system or import identity aliased to a person shows in the record, last-modified 27 of them, including every capital injection, every inventory reclass, every intercompany journal, and every entry over $10,000, with zero audit notes on any of them. The Controller touched one journal. The Accountant touched one. No journal has a recorded creator different from its last modifier, so segregation of duties cannot be demonstrated from the record.
That is a careful sentence, and the report uses it carefully. It doesn't say there's no segregation of duties. It says the record can't show one.
Elimination Has Never Run
The account has an elimination subsidiary, two accounts flagged for elimination, and paired intercompany entities. The elimination subsidiary has zero transaction lines in its entire history. The two flagged accounts have zero postings. No line anywhere carries the eliminate flag. Three advanced intercompany journals move $1,000 a month of automobile expense between two subsidiaries, and they net arithmetically because both sides post to the same account, so today's balance-sheet consequence is immaterial. The process consequence isn't. Every consolidated report ever produced from this account was produced without an elimination pass.
What It Recommends
Lock first, then close. Lock A/R, A/P, and All on every period through July, close the empty years outright, then adopt a standing rule of lock by working day 5 and close by working day 10, and enforce it through the Period Close Checklist so the close leaves a trail. Measure cycle time from the first month this happens, because today it can't be measured. Then reverse the three test journals, assign an approver and clear the four pending ones, require the reversal link on script-generated reversals, and enforce a memo on every journal. Then run elimination once, at a moment when it will post nothing material, which is exactly the right moment to establish the step.
The SuiteQL is in Appendix A, including the two probes that failed and what was done instead. The reducer ran in 18 milliseconds. The hand-check reconciles the period counts, the close batches, the journal classes, the debit totals, and, across studies, the $33,700 reversal journal to the voided vendor payment in the procure-to-pay report. There's also a note that the system-note clock and the transaction clock on this account are about four months apart, which is the kind of thing you only find out by trying to combine them.
Wrapping Up
Of the seven process-mining prompts in the release, this is the one I'd hand to an auditor. It's built for the flow finance leads most want measured and least often see, and when the account turns out not to record the flow at all, the report treats that as the finding rather than as a reason to stop.
Record-to-Report Period Close Process Mining is in the paid tier of the library. The full sample report from the test account is online, and I covered the whole September release in a separate post.
The account has $19.8 million of gross postings in 2026 alone, and anyone with transaction permissions could alter any of it, and no note would record that they had.