Hey folks, I've been digging into AuditBoard for a few months now, mostly for managing SOX controls, and I keep hitting a wall with reporting. The built-in "Overdue Actions" report seems a bit... limited? It gives you the basics, but I need to slice the data more for our weekly syncsβlike filtering by specific control owners, seeing how overdue each item really is, or grouping by process area.
Has anyone built a custom report or found a workaround to pull a more detailed list? I'm thinking something that includes:
- The original due date vs. today (to calculate days overdue)
- The specific control or issue title
- Current owner and their department
- Maybe even the last comment or status update
I tried the standard report builder, but the fields I need seem scattered across different modules. Do I need to use the API for this, or is there a hidden filter/export trick I'm missing? Our team is starting to track this manually in a spreadsheet, which defeats the purpose 😅
For context, we're on the Enterprise plan. Any tips from fellow tinkerers would be awesomeβI love comparing how different teams set this up!
βοΈ
Totally feel you on the manual spreadsheet thing - that's exactly where my team was headed. 😅
We ended up using the API, but it was a bit of a headache. The real trick was figuring out which endpoints combined the action item data with the user/owner profile data. Once we got the raw JSON, I dumped it into Sheets and built the report from there.
Have you tried reaching out to your CSM? Ours gave us a few pre-built API query examples that were a huge time saver. Still had to calculate "days overdue" ourselves in the sheet, though.
> "fields I need seem scattered across different modules"
That's by design. They want you to upgrade to the "advanced reporting" add-on that costs another 30% of your license.
API is the only clean escape. But don't expect the documentation to be much better - I spent two hours mapping endpoints because their "Action Items" resource doesn't return owner department directly. You're joining three separate calls and stitching in Sheets.
One thing nobody mentions: the API rate limit on the Enterprise plan is 100 req/min. If your overdue list is large, you'll hit it. Batch your pulls by date range or you'll be debugging 429 errors at 5pm on a Friday.
Also, if you're manually tracking in a spreadsheet, you've already lost. The cost of that labor is higher than the tool's premium.
show the math
Spot on about the API route. That rate limit hit us too during a big quarterly review - the error handling wasn't fun.
But the "cost of labor" point is a good one. While I built a better report via the API, I actually used it to push for the advanced reporting module. Showed them the manual work hours saved, and they ended up approving it. Sometimes the janky workaround is just ammunition for the budget request.
Beta tester at heart
That manual spreadsheet you mentioned is the vendor's favorite feature, I swear. It proves they've created a problem they can sell you the solution for later.
API is the way if you're stubborn, but user400 nailed it - the data model is deliberately fractured. Want the owner's department? That's a separate call to the "Users" endpoint. Need the control description? Another call. You'll spend more time building data joins than actually managing your SOX backlog.
My cynical two cents: pull the ugliest, most labor-intensive report you can via the API once. Use it to show your manager the ridiculous manual process. Sometimes you need the spreadsheet to scream loud enough for them to approve the "advanced reporting" add-on budget. It's a feature demo via pain.
Trust but verify.
Yep, you're running into the same wall we did. The "hidden" filter trick is just using the export button on that default report, then doing the real work in Excel.
But you need that owner department field. That's the killer. I've done the API pull for it. If you go that route, remember to grab the user ID from the action items first, then call the users endpoint with that list. It's two pulls, but you can script it pretty quick.
Our quick fix was a shared Google Sheet with IMPORTRANGE, pulling from the CSV export and a separate user directory sheet. It's not elegant, but it got us through Q4.
measure twice, ship once