Chapter 16: Audit Monitoring and Report Assurance

Accounting Analytics: An Integrated Approach

In this chapter

Part IV of V: Data Visualization and Power BI

Chapter 4 of 4 in this Part

  • 16.1 From Audit Tests to Monitoring
  • 16.2 Designing an Exception Register
  • Guided Tutorial 16.1
  • 16.4 The Monitoring Page
  • Guided Tutorial 16.2
  • 16.6 Reviewing Exceptions
  • 16.7 Auditing the Report Itself
  • Guided Tutorial 16.3
  • 16.9 Looking Ahead

Learning objectives

  1. Distinguish continuous auditing from continuous monitoring, and exceptions from anomalies, and specify a monitoring test by its rule, population, frequency, and expected result.
  2. Build an exception register in Power Query that turns the flags of several tests into one table of exceptions, with a table of tests and the populations needed for rates.
  3. Build a monitoring page that shows exception counts and rates by test and month and lets a reviewer drill through to the documents behind them.

Learning objectives (continued)

  1. Record a disposition for each exception in a table that survives every refresh, and decide which open exceptions a reviewer should examine first.
  2. Test a report before relying on it, by reconciling its populations, rerunning its tests, and establishing the date through which its data run.
  3. Explain the change controls that a report used every month needs, and why uncontrolled copies of its file escape them.

Three requests reach internal audit

  • The audit committee: do the exceptions of earlier audits recur?
  • The chief audit executive: review each exception once, and keep the result
  • The controller: can internal audit rely on the reporting package too?
  • So: build a monitoring report, and test both reports before relying on them

16.1 From Audit Tests to Monitoring

Monitoring runs the same tests every period

  • Chapter 8 tested whole populations once, in a workbook
  • Chapter 12 saved its tests as queries to rerun every quarter
  • Monitoring runs them every period, on new data, and keeps the results
  • So the results can be compared over time

Continuous auditing and continuous monitoring

  • Continuous auditing: internal audit’s ongoing assessment of risks and controls
  • It gives the board and management assurance throughout the year
  • Continuous monitoring: management’s ongoing review of its own controls
  • Auditing relies on strong monitoring, which internal audit can help build

Rules produce exceptions; analytical tests, anomalies

  • A rule holds or fails, such as approval within the approver’s limit
  • A failure is an exception: a record that needs an explanation
  • An analytical test finds anomalies: records unlike what is expected
  • An anomaly is a reason to look, not yet a failure

Five journal entry tests from Chapter 8

Table 16.1 · The monitoring tests

TestID Test Process Source
JE Weekend Entry created on a weekend Journal entries Chapter 8
JE Backdated Entry created after its posting date Journal entries Chapter 8
JE SelfApproved Entry approved by its creator Journal entries Chapter 8
JE AboveLimit Entry above its approver’s limit Journal entries Chapter 8
JE RoundAmount Entry in whole thousands Journal entries Chapter 8

Six purchasing and payroll tests

Table 16.1 · The monitoring tests

TestID Test Process Source
PO SelfApproved Order approved by its creator Purchase orders Chapter 12
PO AboveLimit Order above its approver’s limit Purchase orders Chapter 12
PO AfterTermination Order dated after the approver left Purchase orders Chapter 12
PR PaidBeforeApproval Pay made before the register was approved Payroll Exercise 12.5
PR AfterTermination Pay period ending after termination Payroll Exercise 12.5
PR SelfApproved Register approved by its own employee Payroll Exercise 12.5

The monitoring cycle

Detail of: A cycle diagram. A rule runs on each period's population and produces exceptions; the exceptions go to internal audit's monitoring report, where each receives a disposition; dispositions feed back into the rule, its threshold, or the control. A side panel distinguishes continuous auditing, run by internal audit for assurance, from continuous monitoring, run by management on its own controls, and notes that the report goes to the people who oversee the controls, while those whose transactions are tested hear only of the exceptions they must explain.
Figure 16.1 · The Monitoring Cycle (detail)

Check your understanding

Exception or anomaly; auditing or monitoring?

  1. An entry approved by the person who created it
  2. Two equal payments to one supplier a few days apart
  3. Management reviews its own approvals every month
  4. Internal audit runs the tests to give the board assurance

Each one has its name

  1. An exception: a rule failed
  2. An anomaly: a reason to look, not yet a failure
  3. Continuous monitoring
  4. Continuous auditing

16.2 Designing an Exception Register

One table holds every test’s exceptions

Table 16.2 · The columns of the exception register

Register column Journal entries Purchase orders Payroll registers
TestID JE and the flag name PO and the flag name PR and the flag name
DocumentNumber EntryNumber PONumber Register and its ID
EventDate PostingDate OrderDate PayDate
Amount TotalAmount OrderTotal NetPay
EmployeeID ApprovedByEmployeeID ApprovedByEmployeeID ApprovedByEmployeeID

Flag, unpivot, append

  • Each test becomes a flag column: one if a record fails, zero if not
  • Unpivot turns the flag columns into rows, one per record and flag
  • Keep the rows whose value is one: exactly the exceptions
  • Append stacks the processes, matching columns by name, not position

A count needs its population

  • A dozen exceptions in a few hundred entries is a high rate
  • The same dozen in many thousands of orders is a low one
  • So the populations stay in the model, as fact tables of their own
  • They are also what the auditor reconciles before relying on the tests

From flags to the register in Power Query

Detail of: A model diagram. Three flagged tables, JournalEntry, PurchaseOrder, and PayrollRegister, each feed an exception query through Unpivot and a filter on the flag value; the three exception queries are appended into one Exceptions table. Exceptions relates to Tests on TestID, to Date on EventDate, and to Employee on EmployeeID, and Employee also relates to JournalEntry through the entry's approver. The three flagged tables remain in the model as populations, related to Date, and JournalLines relates to JournalEntry.
Figure 16.2 · The Exception Register in the Monitoring Model (detail)

The register beside the populations it tests

Detail of: A model diagram. Three flagged tables, JournalEntry, PurchaseOrder, and PayrollRegister, each feed an exception query through Unpivot and a filter on the flag value; the three exception queries are appended into one Exceptions table. Exceptions relates to Tests on TestID, to Date on EventDate, and to Employee on EmployeeID, and Employee also relates to JournalEntry through the entry's approver. The three flagged tables remain in the model as populations, related to Date, and JournalLines relates to JournalEntry.
Figure 16.2 · The Exception Register in the Monitoring Model (detail)

Guided Tutorial 16.1: Journal Entry Monitoring

Steps 1 to 6: start the file and flag the entries

  1. Start the monitoring file
  2. Keep the columns the tests need
  3. Bring in the approver’s limit
  4. Add the first three flags
  5. Add the last two flags and the score
  6. Load the entries and give them a calendar

Steps 7 to 12: score, drill through and reconcile

  1. Score the entries
  2. List the riskiest entries
  3. Bring in the entries’ ledger lines
  4. Drill through to an entry’s lines
  5. Turn the flags into exceptions
  6. Reconcile the population

Each rule becomes a flag column

// Weekend
if Date.DayOfWeek([CreatedDate], Day.Monday) >= 5
    then 1 else 0

// SelfApproved
if [CreatedByEmployeeID] = [ApprovedByEmployeeID]
    then 1 else 0

// RiskScore
[Weekend] + [Backdated] + [SelfApproved]
    + [AboveLimit] + [RoundAmount]

The flags and the score in Power Query

Detail of: A mock of the Power Query editor showing the JournalEntry query after the flag columns are added. Each row is a journal entry, shown by its number, followed by the columns Weekend, Backdated, SelfApproved, AboveLimit, RoundAmount, and RiskScore; the other columns of the query are scrolled out of view. Most rows show zeros; a few rows of January entries show ones, and their risk score is outlined. The Applied Steps pane lists the merge, the expansion, and one step for each added column.
Figure 16.3 · The Journal Entry Flags in Power Query (detail)

Eight entries fail two tests or more

Detail of: Two mocks of Power BI report pages, one above the other. Above, the Journal Entries page: a matrix of risk scores with the number of entries and their amount for each score, most entries at zero and one entry at four, and a table of the entries that failed two tests or more, with the opening balance entry at the top. Below, the Entry Lines page reached by drill-through, with a back button, listing that entry's ledger lines by account with their debits and credits, which total the same amount.
Figure 16.4 · The Risk Scores and an Entry’s Ledger Lines (detail)

Drill through to the entry’s ledger lines

Detail of: Two mocks of Power BI report pages, one above the other. Above, the Journal Entries page: a matrix of risk scores with the number of entries and their amount for each score, most entries at zero and one entry at four, and a table of the entries that failed two tests or more, with the opening balance entry at the top. Below, the Entry Lines page reached by drill-through, with a back button, listing that entry's ledger lines by account with their debits and credits, which total the same amount.
Figure 16.4 · The Risk Scores and an Entry’s Ledger Lines (detail)

Checkpoint

Before you add the other processes, confirm the following:

  • The five flags and the risk score reproduce Chapter 8’s counts and distribution.
  • The opening balance entry drills through to its ledger lines, and they balance.
  • JE Exceptions has one row per failed test, with the register’s column names, and is not loaded.
  • Test 1 shows the entries’ total equal to the debits and the credits of their ledger postings.

16.4 The Monitoring Page

A heat map shows which tests fail, and when

  • A matrix of tests by month, with the number of exceptions in each cell
  • Cells shaded by rule, darker for more exceptions
  • The number stays in every cell, so shading never carries meaning alone
  • A drill-through page lists the documents behind any cell

A January cluster, and a row in every month

  • Taken together, most entry and order exceptions fall in January
  • A seasonal cluster points to how controls work at that time of year
  • One test recurs every month: registers approved by their own employee
  • A recurring exception points to the design of a control

A rate sets each count beside its population

  • Journal entries are few, so a handful of exceptions is a high rate
  • Purchase orders run to many thousands, so theirs is a small fraction
  • Rates per thousand show how often the tests find exceptions
  • A count alone hides that as volume changes

Check your understanding

What does each pattern suggest?

  1. A dark January column in every year
  2. One row shaded in every month
  3. A dark December cell for entries above the limit
  4. Many exceptions in a process of many thousands of documents

Each pattern has its meaning

  1. How controls operate at the start of a year
  2. The design of a control: one finding, not dozens
  3. The year-end closes, expected and explained once
  4. Check the rate before the count

Guided Tutorial 16.2: The Exception Register and the Monitoring Page

Steps 1 to 7: flag the other processes and append

  1. Choose the purchasing and payroll Tables
  2. Keep the columns the tests need
  3. Flag the purchase orders
  4. Bring the payment, the period, and the payee onto each register
  5. Flag the payroll registers
  6. Turn the new flags into exceptions
  7. Append the register

Steps 8 to 14: measure, map and test the register

  1. Describe the tests
  2. Relate the register and the populations
  3. Measure the exceptions and their rates
  4. Build the heat map
  5. Add the approvers and the rates
  6. Drill through to the documents
  7. Test the register

Population counts the test’s own documents

Population =
SWITCH (
    SELECTEDVALUE ( Tests[Process] ),
    "Journal entries", COUNTROWS ( JournalEntry ),
    "Purchase orders", COUNTROWS ( PurchaseOrder ),
    "Payroll", COUNTROWS ( PayrollRegister )
)
  • With no single process selected, it is blank: rates do not mix populations

The heat map: January, and one row every month

Detail of: A mock of a Power BI report page named Monitoring. A matrix lists the eleven tests as rows and the months January to December as columns, with the number of exceptions in each cell and darker shading for larger numbers. The January column is the darkest; the row for registers approved by their own employee has a shaded cell in every month. A bar chart beside it ranks approvers by their exceptions, with the Accounting Manager far ahead. A table lists each test's exceptions, population, and rate per thousand documents.
Figure 16.5 · The Monitoring Page (detail)

Rates set each count beside its population

Detail of: A mock of a Power BI report page named Monitoring. A matrix lists the eleven tests as rows and the months January to December as columns, with the number of exceptions in each cell and darker shading for larger numbers. The January column is the darkest; the row for registers approved by their own employee has a shaded cell in every month. A bar chart beside it ranks approvers by their exceptions, with the Accounting Manager far ahead. A table lists each test's exceptions, population, and rate per thousand documents.
Figure 16.5 · The Monitoring Page (detail)

From a cell to the documents behind it

Detail of: A mock of a Power BI drill-through page named Exception Detail, with a back button and a note of its drill-through filters: the test of orders dated after the approver left, and the month of January. A table lists the orders behind that cell, with their numbers, order dates, amounts, and their approver, an account executive whose employment had ended in 2024.
Figure 16.6 · The Exception Detail Page (detail)

Checkpoint

Before you review the exceptions, confirm the following:

  • Exceptions holds the three processes, with every date under EventDate and every number under DocumentNumber.
  • Test 2 returns the counts of Chapters 8 and 12 for each of the eleven tests.
  • The heat map shows the January cluster and one row shaded in every month, and the bar chart shows the approver behind that row.
  • A cell of the heat map drills through to its documents, and the detail lists as many documents as the cell counts.
  • Clicking an approver in the bar chart leaves the rates table unchanged.

16.6 Reviewing Exceptions

Dispositions live in a table of their own

  • Each exception needs a disposition: expected, follow up, or report
  • Text typed beside a refreshed query can move to the wrong row
  • So keep the dispositions in a table, keyed by test and document
  • Merge them into the register; those without one are open, not yet reviewed

Order the review by score and novelty

  • A monthly system can raise more exceptions than reviewers can examine
  • All else equal, start with documents that fail more tests, and weigh amount, age and urgency
  • An exception new this month comes before one already explained
  • Scores can learn from what past investigations found

Two kinds of exception are not reviewed one by one

  • Expected every period, such as the year-end closes above every limit
  • Its disposition and evidence are recorded once, then checked as it recurs
  • Recurring by design, such as registers approved by their own employee
  • One finding, reported once; the response is a change to the control

Check your understanding

How should each be reviewed?

  1. Year-end closing entries above every approver’s limit
  2. Registers approved by the employee they pay, every month
  3. An entry that fails four tests
  4. An exception that is new this month

Each exception has its review

  1. Explained once with evidence, then checked as it recurs
  2. One design finding, reported once
  3. First, other things equal, since it fails the most tests
  4. Before the exceptions already explained

16.7 Auditing the Report Itself

The questions an auditor asks of a report

Table 16.3 · The questions an auditor asks of a report

Question Evidence In the reports of this Part
Is every document in the model? Each population reconciled to the ledger, and document numbers checked for gaps Tests 1 and 4 of the monitoring file; the Validation pages
Do the measures compute what they claim? Queries that reproduce totals known from other tools The package’s Tests 1 to 5; Test 2 of the monitoring file
How current are the data? The last date of each population, and the refresh history The Data Through card; the package’s About page
Who changed the report, and was the change reviewed? The version history of the report’s files, and a record of approvals A Power BI project under version control

Completeness: reconcile, or test for gaps

  • Reconcile each population to the ledger, as Test 1 does
  • With nothing to reconcile to, test the document numbers for gaps
  • Unique numbers from one to the count leave no gap between them
  • Rerun the tests at every review, and keep their results and date

Currency: each population has its own last date

  • A report shows the data of its last refresh
  • Entries and orders run to the last day of the year
  • Payroll’s last pay date comes earlier, with later work in open periods
  • So a page states the latest date that every population reaches

Change control: a project shows every change

  • Each change is requested, tested, approved and recorded
  • The person who approves a change is not the one who made it
  • A .pbix is one binary file; a .pbip stores text that Git can compare
  • The Tests tab, rerun before publishing, is the regression test

Watch out: an uncontrolled .pbix copy escapes control

  • A copy of an import model holds every row, whatever its pages show
  • Its data stop at the date of the copy
  • Its measures can drift from the version readers use
  • Keep one authoritative version, and approve and record any copy

Check your understanding

Which question does each piece of evidence answer?

  1. Unique order numbers that run from one to the count of orders
  2. The package’s tests, rerun and dated
  3. The Data Through card on the page
  4. The Git history of the report’s project

Each piece of evidence has its question

  1. Is every document in the model?
  2. Do the measures compute what they claim?
  3. How current are the data?
  4. Who changed the report, and was the change reviewed?

Guided Tutorial 16.3: Reviewing Exceptions and Testing the Reports

Review and test the reports in nine steps

  1. Record the dispositions
  2. Merge the dispositions into the register
  3. Measure the open exceptions, and test the dispositions
  4. Build the review page
  5. List the documents that fail more than one test
  6. Test the populations
  7. State the date through which the data run
  8. Rerun the package’s tests
  9. Write the memo

Most open exceptions are one design finding

Detail of: A mock of a Power BI report page named Review. Two cards show the number of reviewed exceptions and the much larger number of open exceptions. A matrix lists the open exceptions by test and year; the row of registers approved by their own employee holds most of them, and the row of journal entries above the approver's limit is small because the year-end closes have dispositions. A table lists the documents that fail two tests or more, with the opening balance entry at the top with four, followed by journal entries and purchase orders with two; three orders show one open exception of their two.
Figure 16.7 · The Review Page (detail)

Documents failing two or more tests for review

Detail of: A mock of a Power BI report page named Review. Two cards show the number of reviewed exceptions and the much larger number of open exceptions. A matrix lists the open exceptions by test and year; the row of registers approved by their own employee holds most of them, and the row of journal entries above the approver's limit is small because the year-end closes have dispositions. A table lists the documents that fail two tests or more, with the opening balance entry at the top with four, followed by journal entries and purchase orders with two; three orders show one open exception of their two.
Figure 16.7 · The Review Page (detail)

Test 4 checks the numbers and the payment records

Detail of: A mock of DAX query view in Audit Monitoring.pbix with the Tests tab open. The editor holds the query of Test 4, which counts the purchase orders and their unique numbers, finds the first and last order numbers, and counts the payroll registers and those without a payment record. The Results grid shows one row: the number of orders equal to the number of unique numbers and to the last number, a first number of 1, the number of registers, and 3 registers with no payment record.
Figure 16.8 · Test 4 in DAX Query View (detail)

Test 4: no gap; three registers lack a payment record

Detail of: A mock of DAX query view in Audit Monitoring.pbix with the Tests tab open. The editor holds the query of Test 4, which counts the purchase orders and their unique numbers, finds the first and last order numbers, and counts the payroll registers and those without a payment record. The Results grid shows one row: the number of orders equal to the number of unique numbers and to the last number, a first number of 1, the number of registers, and 3 registers with no payment record.
Figure 16.8 · Test 4 in DAX Query View (detail)

Data Through summarizes observed event dates

Data Through =
MINX (
    {
        MAX ( JournalEntry[PostingDate] ),
        MAX ( PurchaseOrder[OrderDate] ),
        MAX ( PayrollRegister[PayDate] )
    },
    [Value]
)
  • Earliest maximum event date: December 18, 2026, the scheduled PayDate of a loaded register

Checkpoint

Before you send the memo, confirm the following:

  • The dispositions are merged into the register on the test and the document, and Test 3 shows that every one found exactly one exception.
  • The Review page shows the open exceptions by test and year and lists the documents that fail two tests or more.
  • Test 4 shows the order numbers without a gap and the three registers without a payment record, and the Data Through card shows the latest date that every process’s data reach, a bound observed in the extract.
  • The package’s Tests 1 to 5 return the values their chapters expected, and the package was closed without saving.

16.9 Looking Ahead

What monitoring and the audit of the reports found

  • Exceptions cluster in the first month of every year
  • One recurs every month, because a control has no one to perform it
  • Dispositions survive every refresh; open exceptions await review
  • Entries reconcile, orders have no gap, and currency differs by process

Part IV is complete

  • A model from the workbook, measured with DAX
  • A reporting package for the managers
  • Monitored and audited for internal audit
  • Next: the appendix, the Part IV case, and the capstone cases

Summary

  • Monitoring reruns rule tests every period and keeps the results
  • An exception register: flag, unpivot and append, beside its populations
  • A heat map with rates and drill-through shows tests, months and documents
  • Dispositions in their own table leave the open exceptions to review
  • A report is audited for completeness, tests, currency and change control

Key terms

Anomaly · Append · Change control · Continuous auditing · Continuous monitoring · Data currency · Exception register · Open exception · Unpivot

Practice and next steps

  • Financial Accounting
    • Exercise 16.1: Monitoring the Receivables
    • Exercise 16.2: Year-End Cutoff on the Monitoring Report
  • Managerial Accounting
    • Exercise 16.3: Surge Days by Month
    • Exercise 16.4: Exception Rates over Time
  • Auditing
    • Exercise 16.5: Benford’s Law in DAX
    • Exercise 16.6: Near-Duplicates and the Concentration of Approval

Next: Comprehensive Case: Finding the Cash Behind the Profit

About these slides

These slides accompany Accounting Analytics: An Integrated Approach, licensed under CC BY-SA 4.0. Every figure and table comes from the chapter:

https://aa.accountinganalyticshub.com/chapters/16-audit-monitoring/chapter.html