SystemInternal Audit & SOX Compliance

Continuous Controls Monitoring

Continuous controls monitoring you work with in conversation: the agents test every key control each night, cite the records and ask; owners decide and the SOX lead signs

Control failures found in a day, not at year-end, and every fix proved by a re-test.

See one case, screen by screen ↓
demo148controlstested overnight on their whole population — 3,184,522 records between 02:00 and 02:41
demo4 h 27minfrom a payment role granted at 21:47 to a cited exception at 02:14, in the sample case
demo23 → 6cases23 raw exceptions in one night: 9 suppressed under 2 approved known exceptions, the other 14 grouped into one case per cause
target0casesclosed without a passing re-test on live data
In short

What is Continuous Controls Monitoring?

Continuous controls monitoring is the always-on testing of key financial and IT controls on the whole population, instead of a sample a few times a year, with exceptions routed to the control owner. Continuous Controls Monitoring does it with seven agents that re-run every monitored test each night, check whether an access conflict was used, open one cited case per cause and prove each fix with a re-test, while the owner decides and the SOX Program Manager signs.

How to choose AI solutions for back-office and enterprise work →

Updated

The problem

Why a broken key control stays broken until interim testing

Most key SOX controls are still tested by sampling a few times a year. A sample of 25 items for a daily control tests a fraction of a percent of the population, so a control can break in March and nobody knows until the interim test in September or the auditor's walkthrough in January. An access conflict granted one evening is found at the next quarterly user access review, weeks later, after any payment run it could have touched.

Where monitoring exists, it is usually rule-based: every theoretical SoD conflict raises an alert, owners learn to ignore them, and suppressions live in a spreadsheet with no expiry. Cases are closed on the owner's word without anyone re-running the test, and every year the evidence for the external auditor — run parameters, populations, who approved what — is rebuilt by hand.

typical$2.3Ma yearfor the average SOX program, up 44% in two years
typical16hoursto test one control's operating effectiveness, up from 12
typical17%of controls automated, while in-scope systems grew from 17 to 40
Where the hours go on one access exceptionestimated
By hand12 days
With the solution1.1 days
  • Pulling the role assignments, user record and access ticket2 → 0.1 d
  • Reading the logs to see whether the conflict was used3 → 0.1 d
  • Grouping alerts and checking them against suppressions1.5 → 0.1 d
  • Writing up the owner's options and chasing the fix2 → 0.5 d
  • Re-testing the fix1.5 → 0.1 d
  • Assembling the evidence for the auditor2 → 0.2 d

Estimated split for one SoD exception at a large SOX filer, by hand and with the solution.

How it works

How a control failure is found and fixed

Seven agents test every control each night, check whether a conflict was used, ask the owner and prove every fix; a person decides and signs.

What comes in
Systems read5 systems · ERP, HR, identity, tickets, treasury, read-only
Agents at work
Monitoring agentwhole population, nightly
Then
Usage checkerwas it used?
Triage agentone case per cause
Then
Remediation agentoptions for the owner
Escalation agentclocks and repeats
Then
Re-test agentgreen only on a pass
Evidence writerauditor-ready
A person decides
Control owner and SOX Program Managerowner fixes, SOX lead signs
What comes out
Fixed and re-tested
Signed off
Evidence package
One case, step by step

One SoD conflict, from granted to proved fixed in a morning

Kestrel & Vane Group runs 64 SAP company codes on one S/4HANA production system, with a shared service centre in Zagreb. At 21:47 on 13 October an accounts payable specialist who already maintains vendors is given payment release. Here is what happens next, screen by screen, in the working solution.

  1. 0108:04

    The overnight brief, as a conversation

    Elena Brandt · SOX Program Manager

    Elena's day starts with the agents reporting what they did overnight: 148 controls tested, 142 green, 6 open cases, 9 items suppressed with a reason, 3 that need her. Each agent writes in plain words, with a citation behind every figure and a button for the next step. On the side, “Waiting on you” lists the critical ITGC-12 case, the ITGC-04 escalation and a request to extend a known exception.

    Usage checker: “ITGC-12, critical. User mkovac was given payment release at 21:47 while she already maintains vendors. I read the logs: the conflict was not used. Daniel Osei has the case and three options.”

  2. 02The pulse

    Every key control on one calm screen

    Elena Brandt · SOX Program Manager

    The control pulse is one strip per monitored control: ninety nights of results as a line, and last night's exceptions as dots she can count — solid for open, hollow for suppressed. The six controls with exceptions sit at the top under their status: with owner, escalated, re-testing. Green controls are folded away, and the agents' conversation sits beside the list, ready to answer or take an instruction.

    “Next: ITGC-12 is critical. The agents have the record, checked it was not used, and gave Daniel Osei three options.”

  3. 0302:14 overnight

    The exception arrives with its system records

    Monitoring agent

    ITGC-12 — no user can both maintain vendors and release payments — tests rule SOD-P2P-04 across 18,406 dialog users in 64 company codes. Clean for 89 nights, it found one user: mkovac holds Z_AP_VENDOR_MAINT since 4 March 2025 and was given Z_FI_PAYMENT_RELEASE at 21:47, valid to 31.12.9999. The drawer shows the AGR_USERS rows, the user record and ServiceNow request RITM0048213, “Holiday cover for payment runs, 14–25 Oct”, filed as a standard catalog item, so the access check never ran.

    Every record is read through a read-only account and stamped with who read it and when.

  4. 0402:16

    “Can do” is not “did do” — answered before anyone asks

    Usage checker

    The usage checker read the change documents and the transaction log for the whole window, 21:47 to 02:14: 0 payment runs, 0 payment releases, 0 vendor creates or changes, 0 bank-detail changes. She displayed vendor lines three times, read only. When Elena asks in the case “Was the access used?”, the answer comes back with its source and a confidence of 0.98.

    Its limit: below a confidence of 0.95 the usage checker never says “not used” — it says it could not tell, and asks a person.

  5. 0502:18 – 02:19

    One case, three options, a recommendation

    Triage agent and remediation agent

    The triage agent opened CASE-1047: one exception, one cause, severity Critical by rule, due 18:00 the same day. It checked the two active known exceptions, SUP-027 and SUP-029, and neither applies. The remediation agent then asked Daniel Osei, the control owner, with the records and three options: A, remove payment release (recommended, because Ivan Horvat already releases payments for company code 3100 without vendor maintenance); B, remove vendor maintenance until 25 Oct; C, keep both for at most 14 days under a daily review, which needs the SOX Program Manager's approval.

    “You make the change in SAP; the agents never change access themselves.”

  6. 0609:41 · 09:52

    Fixed by the owner, proved by a re-test

    Daniel Osei · SAP Security Lead, and the re-test agent

    Daniel chooses option A with reason code RM-01 · Access removed and the note “Cover through Ivan Horvat, agreed with Petra Novak.” He ends the role in SAP (change document 0004417782). The re-test agent re-runs rule SOD-P2P-04 on live data for mkovac and for all 212 users of company code 3100: 0 conflicts, and the exception no longer reproduces. ITGC-12 is green from 09:53.

    The re-test agent never closes a case on the owner's word. If its result disagrees, it says so and the case stays open.

  7. 0710:02 · Signed off

    Two people behind every critical fix

    Elena Brandt · SOX Program Manager

    Critical cases need a second person: the owner resolved, the SOX Program Manager signs. Elena confirms that she reviewed the records, the usage check and the re-test, and signs off. The case closes, and the remediation agent opens follow-up FUP-118 for Amira Haddad: run the access check on every temporary access request. From grant to proved fix took one night and one morning.

    “I reviewed the records, the usage check and the re-test, and agree the case is closed.”

  8. 08Same morning

    A protective action that runs only on his yes

    Marcus Okafor · AP Director

    In CASE-1046, P2P-03 found two vendor bank-detail changes by one user, jbarros, with no call-back. The Fernhill Logistics request came by email from a domain registered on 9 Oct, marked urgent, with an unsigned letterhead, and Fernhill is due €48,760 in the 16 Oct payment run. The remediation agent proposes a payment block on the vendor; Marcus approves or declines it, and then chooses how to resolve the changes.

    “Protective action proposed: a payment block on vendor 300418 Fernhill Logistics, holding €48,760 from the 16 Oct run until the change is verified. It runs only if the owner approves.”

  9. 09Repeat failure

    Third failing month: fix the process, not the instance

    Escalation agent

    ITGC-04 — firefighter sessions reviewed within 48 hours — failed in August, September and October, each time at period end, when the review rota had nobody assigned. Three failing months in 90 days is the repeat-failure rule, so the escalation agent brings it to Elena with the history and recommends raising it for deficiency evaluation with a rota fix by 31 Oct. She decides with a reason code; classification stays with her and the Internal Audit Director.

    “Fixing the instance again will not stop it.”

  10. 1007:52

    A suppression is a decision, with an expiry

    Triage agent

    Marcus asks to extend known exception SUP-027 — three-way-match tolerance overrides at the Ostrava plant during a warehouse migration — to 30 Nov. The triage agent shows the volume falling every week, from 41 a night on 18 Sep to 7 tonight, reaching zero around 8 Nov, and recommends 15 Nov. Elena approves to 15 Nov, approves to 30 Nov or rejects, with a reason code; she cannot be the requester.

    “I recommend 15 Nov: a week of margin, without hiding new problems for three weeks.”

Who it’s for

Built for everyone who owns a key control.

The same night, seen by the five people who carry it — what their year looked like, and what it looks like now.

EB
Elena BrandtSOX Program Manager, Group Internal Controls
SOX Program Manager
Before
“I don't want more alerts. I want to know which three things need me, and proof that last week's fixes held.” Today she learns of a broken control at interim testing.
Now
Starts at 08:00 with the agents' brief, decides suppressions and escalations, and signs off every critical case after its re-test.
DO
Daniel OseiSAP Security Lead · owner of ITGC-12 across 64 company codes
Control owner
Before
“Tell me who, which role, which ticket — and whether it was used. Then I can fix it in ten minutes.” Instead he gets a list of theoretical conflicts.
Now
Gets one case with the records, the usage check and three options with a recommendation; chooses, makes the change in SAP and adds a reason code.
AH
Amira HaddadIT Controls Lead · owns the 52 IT general controls and the data connections
IT Controls Lead
Before
“A rule that cannot fail is not a test. Show me the parameters and the population every night.”
Now
Edits test rules and schedules only with a version note, approves every new test the agents draft, and sets the clocks, rules and agents' limits.
GW
Graham WhitlockInternal Audit Director · reports trends to the Chief Audit Executive
Internal Audit Director
Before
“If the fix wasn't re-tested, it isn't closed.” Relies on management's monitoring to cut his own testing, but cannot see it.
Now
Reads the trends in plain words, with a citation behind every figure, and drafts the audit committee note from them.
IC
Imogen ClarkeAudit senior, Halloway Teague LLP · read-only
External auditor
Before
“I need the parameters, the population and the hash — then I can rely on it.”
Now
Receives a signed evidence package and re-performs any night's run from its parameters and SHA-256 fingerprint.
Built on the engine

7 agents. Each with one job, and hard limits.

Seven agents test every control each night, check whether a conflict was used, ask the owner and prove every fix; a person decides and signs.

Monitoring agent

Re-runs each monitored control's test on the whole population every night or on demand, through read-only accounts, and records the parameters, population counts and a fingerprint for every run.

  • Never writes to a system of record
  • Data older than 24 hours makes a test stale, never green
Usage checker

For every access or SoD exception, reads the change documents and transaction logs for the exact window and says whether the conflicting access was used, listing the transactions.

  • Never says “not used” below a confidence of 0.95 — it says it could not tell and asks a person
Triage agent

Groups exceptions into one case per real cause, sets severity from the rule, applies only approved, unexpired known exceptions and re-checks every suppressed item each night.

  • Never suppresses an item itself
  • Never merges exceptions with different owners without saying so
Remediation agent

Writes the owner's ask with the records, the cause, two or three options and a recommendation, and proposes protective actions such as a payment block or a role removal ticket.

  • Never changes access, master data or payments itself
  • Every protective action needs the owner's approval
Escalation agent

Watches the clock on every case and repeat failures; reminds the owner, then escalates to the SOX Program Manager with the history.

  • Never escalates outside the configured ladder
  • Never closes a case
Re-test agent

After a fix, re-runs the control's test on live data for the exact exception and its population, compares it with the original evidence and returns the control to green only on a pass.

  • Never closes a case on the owner's word
  • If its result disagrees with the owner, it says so and the case stays open
Evidence writer

Assembles the evidence package for the external auditor, writes the trend notes and answers questions, with a citation behind every figure.

  • Never signs
  • Never shares outside the approved auditor list
Control owner and SOX Program Manager

The owner resolves with a reason code; the SOX lead approves suppressions and signs off critical cases. The agents propose; a named person decides.

Ask in plain words

Ask the agents, or tell them what to do

Every screen has the agents' conversation beside it. Ask about any control, case or user, or give an instruction; every answer links to the record behind it.

Was mkovac’s payment-release access used?

No. Between the grant at 13 Oct 21:47 and the test at 02:14 I found 0 payment runs, 0 payment releases and 0 vendor or bank-detail changes by mkovac. She displayed vendor lines three times, read only.

Who granted the role, and under which ticket?

ITADM_RSOLER at 21:47, under ServiceNow RITM0048213, “Holiday cover for payment runs, 14–25 Oct”, requested and approved by Petra Novak. It was filed as a standard catalog item, so no access check ran, and the end date of 25 Oct did not reach SAP.

Why 15 Nov and not 30 Nov?

The warehouse back-postings are falling every week, 41 a night on 18 Sep to 7 tonight. At this rate they reach zero around 8 Nov. 15 Nov leaves a week of margin; 30 Nov would hide three weeks of new problems.

Remind the owners whose cases are due tomorrow

Done. I reminded Marcus Okafor (CASE-1046) and Hannah Vos (CASE-1045) on Teams, each with the records and the options. Both reminders are in the audit trail.

Every screen

The working solution, as it ships.

13 screens from the working solution, on its sample data. Pick one to see it large.

The control pulseOne strip per monitored key control: ninety nights of results, last night's exceptions as dots, a status for each, and the agents' conversation beside it.
The morning briefThe agents report the night in plain words, with citations and a next step each; what waits on the SOX Program Manager sits on the side.
The records behind the exceptionBoth role assignments, the end date that never came, the access request and its approver — each read-only, with who read it and when.
A case, step by stepDetected, checked for use, triaged, owner decides, re-tested, signed off — each step an agent's message with its sources, and a conversation for questions.
The owner decidesThree options with a recommendation, a reason code and a note for the record; the owner makes the change in SAP.
Proved by a re-testThe re-test on live data for the user and the whole company code, with the change document and the re-test run as sources.
Sign-offCritical cases need a second person: the SOX Program Manager attests to the records, the usage check and the re-test, then signs.
A protective actionA payment block on a vendor whose bank details changed without a call-back, proposed by the agent and run only on the owner's approval.
A repeat failure, escalatedThree failing months with their cases, the escalation agent's recommendation and the SOX Program Manager's decision with a reason code.
Known exceptionsA request to extend a suppression, the triage agent's volume trend and recommendation, and the approver's decision with a reason code.
Trends in plain wordsThe quarter written by the evidence writer with a citation behind every figure, exceptions per week and the repeat failures.
The evidence packageRun logs, population fingerprints, control definitions, exceptions, re-tests, known exceptions and the audit trail — signed by the preparer and shared read-only.
Your rulesWho can do what, the clocks and escalation ladder, the suppression rules, notifications and the agents' limits — re-test before close and critical sign-off locked on.
Governance

Built for reliance: cited, re-tested, signed, on the record.

Every exception carries its recordsEach exception opens the system records behind it — role assignments, user record, change document, ticket — and every agent statement links to its source.
Read-only on systems of recordThe agents read SAP, Workday, Entra ID, ServiceNow and the treasury platform through read-only accounts. A payment block or a role removal ticket runs only on the owner's approval.
No case closes without a passing re-testThe re-test agent re-runs the control on live data before it returns to green. Re-test before close cannot be switched off, and a disagreement stays on the record.
Two people on every critical fixThe control owner resolves with a reason code; the SOX Program Manager signs off every critical case with an attestation. This rule is locked on.
Suppressions with a reason and an expiryA known exception needs a written reason, a scope, a named approver who is not the requester and an expiry of at most 90 days. Every suppressed item is re-checked each night; one outside its scope wakes a new case.
An audit trail the auditor can re-performEvery agent and person action is recorded with who, what and when, and cannot be edited. Each run carries its parameters and a SHA-256 fingerprint of the population, so the external auditor can re-run it and compare.
Configuration

Your SOX program's rules, not ours

Clocks, escalation, suppression policy and what the agents may do are settings. Every change is saved as a new version with a note.

SettingDefaultChoose from
Clock for a critical case1 business day1 business day · Same day · 3 business days
Clock for a high case2 business days2 business days · Same day · 3 business days
Repeat failure escalates to the SOX Program Manager3 of 3 months3 of 3 months · 2 of 3 months
Known exception expiryAt most 90 days, reminder 7 days beforein 30 days · in 60 days · in 90 days
Re-test before a case closesOnLocked on
Critical cases signed off by the SOX Program ManagerOnLocked on
Usage checker confidence floor0.95Below it, the checker says it could not tell and asks a person
New critical case noticeEmail + Teams, at onceEmail + Teams, at once · Email · In the app only · Off
Connections

Works with the systems your controls already run on

SAP S/4HANArole assignments, users, change documents, vendors, journals and payments, through a display-only account
Workdayworkers, terminations and compensation changes
Microsoft Entra IDaccounts, groups and sign-in settings
ServiceNowaccess requests, change tickets, call-back forms and review tasks
Treasury platformbank statement imports, payment files and the bank account master
Risk and control matrixyour key controls with their owners, severity and test; the agents propose which can be monitored
What it changes

The difference, in numbers.

Every figure is labelled: a target the solution is built to, an estimate, a typical published result, or a proven one.

target
< 24h
from a control failure to a cited case; 4 h 27 min in the hero case
Sampled testingmonths
Monitored< 24 h
target
100%
of the population tested every night, for 148 key controls
148 controls
3,184,522 records last night
target
0
cases closed without a passing re-test, in 90 days
Closed in 90 days1,222
Without a re-test0

“demo” = seen in the working solution, on its sample data · “target” = the design goal, measured in the live solution · “estimated” = our estimate · “typical” = published figures (KPMG 2025 SOX Survey, FY24 data from about 150 SOX leaders — average program cost $2.3M, up 44% in two years; 16 hours to test one control's operating effectiveness, up from 12; automated controls 17% of the total while in-scope systems grew from 17 to 40). People, companies, vendors and user ids named on this page are fictional — characters and sample data in the working solution.

Questions

What SOX and internal audit teams ask us.

What is continuous controls monitoring?

Continuous controls monitoring is the always-on testing of key financial and IT controls on the whole population, instead of a sample a few times a year, with exceptions routed to the control owner. Continuous Controls Monitoring does it with seven agents that re-run every monitored test each night, check whether an access conflict was used, open one cited case per cause and prove each fix with a re-test, while the owner decides and the SOX Program Manager signs.

How is it different from testing a sample?

A sample of 25 items tests a fraction of a percent of a daily control's population, a few times a year. Here the monitoring agent tests every record each night — in the sample data, 148 key controls and 3,184,522 records in 41 minutes — so a failure is found the next morning, not at interim testing.

How does it cut false positives on SoD conflicts?

The usage checker reads the change documents and transaction logs for the exact window and says whether the conflicting access was actually used, with the transactions. Below a confidence of 0.95 it says it could not tell and asks a person. The triage agent then groups exceptions into one case per real cause, so five failed bank files with one expired certificate are one case, not five.

Can the agents change access, master data or payments?

No. The agents read your systems through read-only accounts. The remediation agent can propose a protective action, such as a payment block or a role removal ticket, and it runs only when the control owner approves. The owner makes the fix in the system.

How are known exceptions and suppressions handled?

Each known exception needs a written reason, a scope, a named approver who is not the requester and an expiry of at most 90 days. The triage agent re-checks every suppressed item each night, wakes a new case if an item falls outside the scope and tells the approver before expiry, with the volume trend and a recommendation.

Can our external auditor use the evidence?

The evidence writer assembles a package with every run's parameters and record counts, a SHA-256 fingerprint of each population, the control definitions with their versions, every exception, resolution, re-test and sign-off, and the audit trail. The preparer signs it and shares it read-only with the approved auditor list, and the auditor can re-perform any run from its parameters. How far they rely on it is the auditor's decision.

Do people stay in control?

Yes. The control owner decides every case with a reason code and can say it is not an exception; the SOX Program Manager approves suppressions, decides escalations and signs off every critical case. No case closes without a passing re-test, and both rules are locked on.

How long does it take to go live?

The Agentic Solution Engine builds and deploys it from your requirements and documents — your risk and control matrix, your rules and read-only access to your systems — and it goes live once every quality gate has passed. A guided first-time setup connects the systems, imports the matrix, lets the agents propose which controls can be monitored, confirms tests and owners, sets the schedule and runs the first night.

See it on
your key controls.

We'll run Continuous Controls Monitoring on a few of your own key controls, read-only, against your risk and control matrix.