How to Run an ERP User Access Review (Quarterly Checklist)
how to do an ERP user access review
Also searched as
- ERP user access review checklist for auditors
- quarterly user access review SOX ERP
- how to review ERP roles and segregation of duties
- terminated users still active in ERP audit finding
Short answer
An ERP user access review is a recurring control where system owners confirm that every active user, role and privileged permission is still justified. Extract users and roles from the ERP itself, join them to HR status, send each business owner a scoped list to certify or revoke, record the decisions, and execute the removals with ticket evidence.
Applies to: Any ERP with role-based security: SAP ECC and S/4HANA, Oracle NetSuite, Infor SyteLine and LN, Dynamics 365 and AX, Epicor Kinetic. Applies to SOX ITGC, ISO 27001 and customer security audits.
Quarterly access review procedure
- 1Fix the scope: all production client or company, plus service accounts, integration users, API tokens and break-glass accounts. Test and sandbox tenants go in a lighter annual review.
- 2Extract the population directly from the ERP, not from a spreadsheet someone maintained. SAP: SUIM user and role reports or tables USR02, AGR_USERS. NetSuite: Setup > Users/Roles > Manage Users with a saved search on role, last login and inactive flag. SyteLine: the Users and Authorizations forms plus the user tables in the application database.
- 3Join the list to HR to find terminated, transferred and long-leave staff. Any active ERP account with no matching active employee or approved contractor record is a finding to fix first.
- 4Add last-login data and flag accounts idle for 90 days or more. Dormant accounts are the most common audit exception and the easiest to remove.
- 5Split the list by business owner (finance, purchasing, production, inventory, HR) and send each owner only their users and roles with a certify, modify or revoke choice.
- 6Run a separate segregation of duties check on combinations such as create vendor plus approve payment, or create purchase order plus receive goods, and on any user holding admin or developer rights in production.
- 7Execute every revoke or modify through your normal change ticket, then re-extract the list to prove the change took effect.
- 8Archive the extract, owner responses, tickets and the final re-extract as one dated evidence pack.
What auditors actually test
External and internal auditors rarely care how elegant your process is. They test three things: that the population you reviewed was complete, that a named owner with authority made each decision, and that removals actually happened. If you cannot show where the user list came from, the review is treated as not performed.
Completeness is the weak point in most reviews. A report built from a manually maintained access matrix will miss accounts created directly in the ERP by an administrator. Always produce the population from a system report or query, record the date and the person who ran it, and keep the raw file unmodified alongside any annotated copy.
Timeliness matters as well. A review that closes two months after the extract can be challenged because users changed in between. Set a deadline of two to three weeks from extract to sign-off, and close the loop with a re-extract so the evidence shows the final state rather than an intention.
Choosing reviewers and the review unit
Reviewing at the individual permission level overwhelms business owners. Review at the role level: each role has a documented description and a business owner, and the owner confirms who should hold it. Reserve line-by-line permission review for privileged roles such as system administrator, security administrator, financial period close and master data maintenance.
The IT manager should not certify business access for the business. IT certifies technical accounts, administrators and integration users; finance, operations and purchasing certify functional roles. Where one person is both owner and user of a role, route that line to their manager so nobody approves their own access.
Keep roles clean between cycles. Every review that ends with 'this role does everything in purchasing' is a sign the role design needs work. Track role count, users per role and the number of users with more than one high-risk role as simple trend metrics so you can show improvement quarter over quarter.
-- Generic idle-account pattern (adapt table and column names to your ERP) SELECT user_id, full_name, last_login_date, role_count FROM erp_users WHERE is_active = 1 AND (last_login_date IS NULL OR last_login_date < DATEADD(day, -90, GETDATE())) ORDER BY last_login_date;
Segregation of duties and privileged access
Segregation of duties is where reviews find real risk. Build a short conflict matrix with the combinations that matter to your business: vendor master maintenance with payment run, journal entry with journal approval, purchasing with goods receipt, price list maintenance with sales order entry, and inventory adjustment with cycle count approval. Check every user against it, not only the new ones.
Where a conflict is unavoidable in a small team, document a compensating control rather than ignoring it. Typical examples are a monthly review of all changes to vendor bank details by someone outside the process, or a report of manual inventory adjustments above a threshold reviewed by finance. Auditors accept a documented, evidenced compensating control; they do not accept silence.
Treat privileged and technical accounts separately. Developers with production write access, database administrators, shared service accounts and API integration users should have named owners, a stated purpose, password or token rotation evidence and logging. Shared logins that several people use are a standing finding; replace them with named accounts or vaulted, logged checkout.
Joiner, mover and leaver controls between reviews
A quarterly review is a detective control. It works far better when preventive controls reduce what it finds. Tie account creation to an approved request that names the role, and tie termination to an HR event that triggers deprovisioning within a day. Most ERPs can lock rather than delete a user, which preserves the audit trail of who posted what.
Movers are the quiet problem. A buyer who moves to finance keeps buying rights unless someone removes them. Ask HR for a monthly transfer list and run it against the ERP user list, or make role removal a mandatory line in the transfer ticket.
Sample your own process monthly. Take five random leavers and confirm the ERP account was locked within your target window. If the sample fails, fix the trigger rather than waiting for the quarterly review to find it.
Common pitfalls
- !Building the user list from an HR or IT spreadsheet instead of the ERP, which misses accounts created directly in the system.
- !Letting managers click approve-all without reading, then having no evidence of any revoke decisions. Track revoke rate; a rate of zero for several cycles is suspicious.
- !Reviewing only users and ignoring service accounts, integration tokens and API credentials, which often have the broadest access.
- !Not re-extracting after removals, so the evidence shows a decision but not an outcome.
- !Having the user's own manager certify administrator access without independent IT security oversight.
- !Deleting terminated users instead of locking them, which breaks created-by and posted-by history in some ERPs.
How an ERP-grounded AI assistant handles this
An assistant such as ERPray, running read-only against the ERP's own user and role tables, can produce the idle-account list, the users with conflicting roles and the terminated-but-active comparison on demand, and show the query it ran so an auditor can reproduce it. It prepares the extract and the owner packets; the certify or revoke decision and the actual change stay with people and your ticketing process.
Frequently asked questions
How often should we review ERP user access?
Quarterly is the common standard for financially significant ERPs under SOX-style controls, with privileged and administrator access reviewed more often, sometimes monthly. Smaller companies without formal audit obligations can run semi-annual reviews, but should still lock leaver accounts within a day or two of termination.
Who should approve access in the review?
The business owner of each role or process, such as the finance controller for finance roles and the purchasing head for buying roles. IT approves technical and administrator accounts. No one should approve their own access, so route those lines to their manager or to a peer owner.
What evidence do auditors want from an access review?
The system-generated user and role extract with date and author, owner responses showing certify or revoke per line, tickets proving the removals were executed, and a post-change re-extract. They also look for follow-up on exceptions and a record of who reviewed the review.
What counts as a dormant account?
Most organisations use no login for 90 days as the threshold, with shorter limits for privileged users. Seasonal users such as year-end finance staff are the main exception, and should be disabled and re-enabled by request rather than left active all year.
Related
How to Test ERP Backup and Disaster Recovery
A backup is only proven when you have restored it and a user has transacted in the restored system. Define RTO and RPO with the business, restore the full ERP stack (database, application, integrations, attachments, secrets) to an isolated environment, run a scripted smoke test, time every step, and record gaps as action items.
How-toERP Patching Cadence: How Often Should You Patch?
Patch the ERP stack in layers on different clocks: operating system and database monthly or quarterly, ERP vendor cumulative updates quarterly or semi-annually, and security fixes on an emergency path measured in days. Test every patch in a sandbox refreshed from production, with a scripted regression and a tested rollback.
How-toHow to Run an Internal ERP Help Desk: Tiers, SLAs and Knowledge
An effective ERP help desk uses three tiers: business super users for how-do-I questions, an ERP support analyst tier for configuration, data and access issues, and technical or vendor escalation for defects and infrastructure. Categorise tickets by process and impact, set SLAs by business impact, and mine ticket data monthly to fix root causes and training gaps.
How-toHow to Monitor ERP Performance: What to Track and Alert On
Monitor the ERP from the user's side first (response time of a few key transactions), then the layers beneath: database waits, blocking and long queries, application server health, batch and integration job duration, queues and storage. Baseline normal for each, alert on deviation, and keep history so you can answer slow-yesterday questions.
CIO briefingERP Integration Architecture: API vs iPaaS vs ETL
Choose by what the data does, not by tool preference. Use the ERP's own API (or its native bus) for transactional writes that must be validated by ERP business logic, ETL or change data capture for bulk analytical reads, and an iPaaS when you have many endpoints, need monitoring and retries, and lack the staff to run your own middleware. Most real estates need two of the three.
CIO briefingData Platform for ERP Data: Replica, Warehouse or Lakehouse
Start with the smallest thing that removes reporting load from the ERP: a read replica or vendor replication feed. Add a warehouse or lakehouse when you must join ERP data with other sources, keep history, or serve many consumers. Put a governed semantic layer on top, because raw ERP tables are not a usable analytics or AI interface on their own.
AI for ERPAI for Infor SyteLine and CloudSuite Industrial
Add grounded AI to Infor SyteLine or CloudSuite Industrial: natural-language answers, agents over IDOs and ION, on-prem or CloudSuite deployment.
AI for ERPAI Agents Over Infor ION API, BODs, and the Infor Data Lake
Build AI agents on Infor ION API Gateway, BODs, and Data Lake, alongside or instead of Infor's own GenAI features, with your choice of model and hosting.
Stuck on Any ERP (SAP, NetSuite, Infor, Dynamics, Epicor)?
Talk to engineers who work inside Any ERP (SAP, NetSuite, Infor, Dynamics, Epicor) every week, and who build private AI that answers these questions from your own ERP data.