How SOX ITGC applies to open source ERP at a public company
If you are an issuer running Odoo or ERPNext for ledger-relevant processes, management's annual ICFR evaluation has to cover the IT general controls that keep those processes reliable. Under Section 404 of the Sarbanes-Oxley Act (15 U.S.C. 7262), management assesses internal control over financial reporting each year, and for accelerated and large accelerated filers that are not emerging growth companies, the external auditor attests to that assessment. No SEC rule or PCAOB standard publishes a catalog of IT general controls. SEC guidance in Release 33-8810 says the ITGCs relevant to your evaluation depend on your own facts and circumstances, and it asks you to evaluate only the ITGCs needed for other controls that address financial reporting risks. The short answer for a self-hosted ERP is that you need documented, tested controls over program changes, user access and data. Your own scoping decision should be written down and approved, because that record is what the auditor will read first.
The external auditor's view comes from PCAOB AS 2201, which governs the audit of ICFR, and AS 2110, which governs how the auditor assesses IT risks. AS 2110 names unauthorized program changes, IT staff holding privileges beyond their duties, inaccurate data processing and unauthorized changes to master file data as IT risks to internal control. AS 2201 also makes effective program change controls a condition for relying on a benchmark of an automated application control instead of retesting it every year. Under AS 2201, a control can fail by being missing or badly designed (a design deficiency) or by being performed by someone without the needed authority or competence (an operating deficiency). In an Odoo or ERPNext environment, that means the change approval workflow, the production admin role and the parameter settings that drive automated calculations each need evidence that they work as designed.
DeployOpen plans, implements, hardens and documents self-hosted open-source systems, and it prepares the controls, configuration baselines and evidence that a compliance assessment will examine. It does not issue audit opinions, attestations or certifications. Those come from your independent auditor, and the auditor's testing approach should be agreed with them before the ERP design is frozen. Confirm early which ITGC areas your auditor expects to test, which ERP modules feed significant accounts, and whether any Odoo or ERPNext functions are treated as automated controls. Those answers determine how much of the rest of this page applies to your organization.
Which ITGC requirements the ERP must meet and how to configure them
This table maps the IT risk areas in PCAOB AS 2110, the parameter and table dependencies in AS 2201, and the SEC program change, access and computer operations areas to what an Odoo or ERPNext system must do and the configuration that supports it. Read each row as a requirement, the configuration that addresses it, and the evidence your auditors will ask for. The main takeaway is that most findings come from unmanaged configuration, master data and privileged access, not from the core code.
| Requirement area | What the ERP must do | Configuration and evidence to prepare |
|---|---|---|
| Unauthorized program changes (AS 2110, B4) | Every change to custom code, workflows and reports is approved, tested and promoted by someone other than the developer | Separate development, test and production sites; ticket-linked change records; restricted deploy rights; evidence of test sign-off before promotion |
| Unauthorized master data changes (AS 2110, B4) | Changes to vendors, customers, bank details, chart of accounts and item costs are authorized and traceable | Version tracking on master records, restricted create and edit roles, periodic review reports of changed master data, approval workflows on bank detail changes |
| Privileges beyond duties (AS 2110, B4) | No single user can both create and approve transactions, or change the system and use it to post | Role matrix mapped to duties; conflict rules for payables, receivables, journals and user administration; quarterly access recertification with signed review |
| Inaccurate data and data loss (AS 2110, B4) | Automated calculations, integrations and backups produce complete, accurate records that can be restored | Scheduled backups with tested restores; reconciliation reports for interfaces; error logs for failed imports; retention settings documented |
| Dependencies on parameters and tables (AS 2201, B30) | Tax rates, numbering sequences, credit limits, approval thresholds and rate tables used by automated controls stay correct | Parameter inventory with owners; change log for system settings; reports showing current values compared with approved values at each period end |
| Benchmarking automated controls (AS 2201, B29) | Reliance on a prior-year test of an automated control requires effective general controls over program changes | Evidence that no unapproved change touched the control's logic during the year; release notes and change tickets kept for the full period |
| Program development and changes (SEC Release 33-8810) | Changes follow a defined lifecycle from request to production, including emergency changes | Documented change procedure, emergency change log with after-the-fact review, module version records, and a list of custom modules with owners |
| Access to programs and data (SEC Release 33-8810) | Direct database and server access is limited, logged and reviewed | Named administrator accounts, directory-based login where supported (see Odoo LDAP and ERPNext LDAP documentation), privileged session logs, and database access reviews |
| Computer operations (SEC Release 33-8810) | Scheduled jobs, batch posting and interfaces run completely and are monitored | Job schedules documented, failure alerts routed to an owner, and job run logs retained for the audit period |
How program change approval works on a self-hosted Odoo or ERPNext
Every change that alters how the system calculates or records financial data is a program change, and it needs approval and testing before it reaches production. On a self-hosted Odoo or ERPNext system that covers more than code. Custom modules, Odoo Studio customizations, Server Scripts in ERPNext, app upgrades and changes to tables or parameters all count. PCAOB AS 2201 makes this concrete: an auditor can rely on a benchmark of an automated application control instead of retesting it each year only if the general controls over program changes are effective. If your change log cannot show who approved each change and where it was tested, the benchmark is lost and the control is tested again every year.
Build the change path around separate development, test and production environments, and treat production as the only place where approved changes are applied. For test copies, Odoo's on-premise documentation describes duplicating a database and neutralizing it, which keeps production data out of unprotected environments while letting testers reproduce real scenarios. Confirm that your neutralization steps disable outgoing mail, scheduled actions and payment or bank connections, and record the duplication as a dated, approved event. On ERPNext, Server Scripts have been disabled by default since version 15 and must be switched on with the server_script_enabled setting. Record who enables that setting, when, and in which environment, because enabling it is itself a change to the control environment.
Where custom logic lives determines how it can be governed. Frappe Cloud public shared benches do not allow Server Scripts, so a financial rule written as a Server Script cannot run there and any ERPNext deployment that depends on one needs a dedicated or self-managed hosting model. Ask your implementation partner to document, for each custom rule, the hosting location, the approval record and the test evidence, and to keep that inventory current through every Odoo or ERPNext version upgrade. Each upgrade is a program change in its own right, and the test database produced for it should be run through the same approval and testing steps before anything reaches production.
Which configuration and parameter changes auditors will test
Configuration changes in Odoo or ERPNext can alter reported numbers without any code change, so auditors look at them as closely as program changes. The areas below are the ones where a parameter edit can change a balance, a tax amount or who can approve a transaction, and each needs a documented request, an approver who is not the person who made the change, and a record that someone reviewed it.
Chart of accounts and tax tables
The chart of accounts decides which ledger line a transaction lands on, and tax tables decide the rate and account a tax amount posts to. A change to an account type, a parent account or a tax rate can misstate reporting for every period that uses it. Evidence to check: a change request for each account or tax edit, approval before the change, a before-and-after export of the affected records, and a review of postings made in the period after the change. Ask the implementation partner how the Odoo or ERPNext configuration is exported and compared between environments.
Automated calculation parameters and rate tables
PCAOB AS 2201 (paragraph B30) notes that automated application controls can depend on related files, tables and parameters, such as a rate table used by an automated interest calculation. In a self-hosted ERP, a rate, a rounding rule, a depreciation method or a currency setting is a parameter that drives many transactions at once. Evidence to check: the parameter value and effective date, who approved it, a recalculation or sample test showing the expected result, and a log of who changed the value. Treat these tables as controlled data, not as settings anyone with admin rights can edit.
Workflow and approval settings
Approval workflows decide which documents need sign-off before they post, pay or ship, and above which amount. Turning off a required approval, raising an approval limit or changing the approver for a document type removes a preventive control without touching any transaction. Evidence to check: a current export of each workflow with its thresholds, a dated approval for each change, and a periodic review that compares the configured workflow with the documented control design. Confirm with the vendor which workflow features the chosen edition and version expose and how their change history is retained.
User role and permission definitions
Role definitions determine what each user can create, approve, edit or delete, so they are the configuration layer that enforces segregation of duties. AS 2110 (paragraph B4) cites IT personnel with privileges beyond their duties as an IT risk to internal control over financial reporting. A role that combines posting and approval, or gives administrators access to financial documents, is a conflict to resolve before go-live. Evidence to check: a role-to-permission matrix, a conflict review signed by the control owner, and the access review records that show who holds each role. Access setup and review are covered in more depth elsewhere on this page.
Number sequences and period locks
Number sequences keep document numbering complete and in order, and period locks stop postings into closed accounting periods. Changing a sequence prefix, resetting a counter or reopening a locked period can create gaps, duplicates or late entries that auditors will ask about at cutoff. Evidence to check: the sequence settings and their change history, approval for any reopening of a period with the reason recorded, and a cutoff review showing that postings after period close were either blocked or approved. Confirm which of these settings can be restricted to a finance administrator role in your chosen version.
Segregation of duties across developers, administrators and business users
Developers write custom modules, server logic and integrations. PCAOB AS 2110 lists IT personnel holding privileges beyond their duties among the IT risks to internal control over financial reporting, so the central question for developers is whether they can change what runs in production without anyone else seeing it. Developers should have full rights in development and test environments, and no standing write access to the production database, file system or deployment pipeline.
- Source code access: Developers commit to a version control repository where each change is reviewed by someone other than the author.
- No standing production rights: Developer accounts do not log into production servers or the production Odoo or ERPNext site with administrator roles.
- Break-glass access: Any emergency production access is granted by a named approver, time-limited and logged for later review.
- Custom code ownership: Server scripts and custom apps are tied to a change record, so reviewers can match each deployed object to an approved ticket.
- Test data handling: Developers work on masked or synthetic data, not copies of live financial records.
Confirm with your vendor or implementation partner exactly which Odoo or ERPNext features your developers need in production, such as server scripts, and whether those features are enabled in your edition and hosting model before you finalize this role.",
System administrators hold operating system, database, container and network access. This is the group that can alter data directly, bypass application controls and change the code base, so it carries the highest privilege risk in the design. The control objective is to separate infrastructure administration from application administration and to make privileged activity visible to people outside the administration team.
- Database access: Direct PostgreSQL access for Odoo, or MariaDB for ERPNext, is restricted to a small named group, with activity logged and reviewed.
- Server and container access: Administrators use individual accounts with multi-factor authentication, and shared root or sudo accounts are avoided.
- Separate duties: The person who patches servers is not the person who approves changes to them, and backup restoration rights are separate from production write rights.
- Privileged activity logs: Shell, database and deployment commands are recorded and sent to a store that administrators cannot edit.
- Periodic access review: Named privileged users are re-certified on a schedule set by your control owner.
Before relying on this design, ask the implementation partner to document every path to the database, including backups, replicas and support access, since any one of these can bypass application roles.",
Functional administrators configure the ERP through its application interface: chart of accounts, tax settings, approval workflows, user roles and parameters. Their work is not code, but it can change how transactions are posted and approved, which makes it an operating control in its own right. AS 2201 describes automated application controls that depend on tables and parameters, such as a rate table used by an interest calculation, so parameter changes deserve the same discipline as code changes.
- Configuration as a controlled change: Changes to accounts, tax rules, numbering and workflow settings are raised as tickets with an approver.
- No self-approval of role grants: A functional administrator who can assign roles cannot also approve their own role assignment.
- Limited scope of administration: Functional administrators manage the business configuration, not the system settings that control authentication or logging.
- Parameter change reports: Regular reports list changes to system parameters, which reviewers compare against approved tickets.
- Clear boundary with IT: Authentication providers and audit logging are owned by the infrastructure team, not by the functional team.
Ask the implementation partner which settings in your version are reachable from the functional administrator role and which require database or server access, since that boundary decides which team the auditor will sample.",
Business approvers are the finance and operations users who post, approve and release transactions. They are the people whose judgment the control relies on, so the key requirement is that the same person cannot both create and approve the same transaction, and that the system enforces this rather than relying on habit. The approval matrix should match the authority levels in your delegation of authority policy.
- Maker and checker: Users who create a payment, journal entry or vendor record cannot approve it.
- Role matrix by function: Accounts payable, receivables, treasury and general ledger roles are separated, with approval limits set in the application.
- Vendor and bank master data: Changes to vendor bank details require a different user from the one who processes payments.
- Approval history: The application keeps who approved what and when, and these records are retained for the period your policy requires.
- Review of conflicting roles: A periodic report flags users holding combinations of roles that the matrix prohibits.
Confirm with the vendor whether your chosen Odoo or ERPNext version can enforce these limits natively or whether custom rules are needed, and whether those rules are themselves upgradable.
How go-live data conversion controls are evidenced
The conversion sequence turns legacy balances, open items and master data into a signed-off opening position in the new system, and each step leaves evidence that shows the data was complete, accurate and authorized when it went live.
Extract and fingerprint source data
The finance owner and the IT team pull master data, open items and closing balances from the legacy system as of an agreed cutoff. Each extract gets a record count, control totals for key amounts and a hash or checksum, stored in a locked location with the name of the person who ran the extract. The step is complete when the source owner signs the extract summary and the totals match the legacy reports for the same date. This evidence addresses the AS 2110 risk of processing inaccurate data and the risk of data loss, because it proves the starting point is known before anything moves.
Approve field mapping and transformation rules
Finance and accounting map each source field to its Odoo or ERPNext target, including chart of accounts translation, tax codes, currencies and default values. Every transformation rule, such as splitting a legacy account or converting a code list, is written down with its business reason and approved by the controller. Changes to the mapping after approval go through the same change record used for system changes. The step closes with a signed mapping specification, which is the reference auditors will use to trace imported values back to the source.
Run trial loads in a non-production environment
The implementation team loads the data into a separate test copy of the system, one object type at a time: master data first, then open items and balances. ERPNext's Data Import documentation advises importing only a few thousand records at a time, so the load plan must split large sets into batches, and each batch needs its own log of rows created, updated and rejected. Rejected rows are corrected in the source, not by hand in the target, and each trial run is repeated until the rejects are explained. Batch and reconciliation evidence has to be planned from the start, because a single unlogged import is hard to defend later.
Reconcile balances and open items
Finance compares the trial load against the source extract for account balances, open receivables and payables, inventory quantities and fixed asset values. Each difference is either fixed in the data or explained in a written reconciling item with an owner and a decision. The reconciliation workpapers include the source totals, target totals, the difference and the approval, and are kept for the period in which the opening balances are used. This step is where data loss and inaccuracy show up in numbers, so the reconciliation is the main evidence that the conversion was complete.
Confirm access and integrity of the converted data
Before the production load, the team confirms who can import, edit or delete master data and balances in the target, and that only the people in the approved load plan had that access during the conversion window. Import logs, server script changes and any direct database work are reviewed against the change records. Where Server Scripts are used for transformations, the team confirms that the setting enabling them was changed under approval and is recorded. The check closes with a short access review that the IT controls owner signs, which supports the AS 2110 concern about unauthorized changes to data in master files.
Perform the production load and cutover
The approved load plan runs in the production environment in the order tested in the trial loads, with a named operator, a second person watching the log and a pre-agreed stop rule for reject thresholds. Each batch is checked against its reconciliation totals before the next batch starts. Any emergency change during cutover follows the normal change approval path, with the approver recorded even if the approval is given after the fact through the agreed escalation route. The output is a complete production load log tied to the mapping sign-off and the trial reconciliation.
Sign off the opening position
The controller, the process owners and the IT controls owner sign a cutover memo that states the cutoff date, the source and target control totals, the open reconciling items and the decision to accept them. The memo references the extract summary, the mapping specification, the trial and production logs, and the access review. Management keeps the package with the ICFR evidence for the first period in the new system, and the external auditor can trace the opening balances from it. The step is complete only when every reconciling item has an owner and a closure date agreed in writing.
What evidence auditors ask for in a SOX ITGC test
What change tickets and approvals do auditors expect for ERP program changes?
Auditors expect a traceable record for every program change showing the request, the business justification, the approval by someone other than the developer, the test result and the production promotion date. In a self-hosted Odoo or ERPNext system, the ticket usually lives in the client's own tracker (Jira, Azure DevOps or similar), so the gap usually sits between that tracker and the code repository. Check that each Git commit or custom app release links to a ticket ID and that no custom module reaches production without an approved ticket. Standard Odoo or ERPNext configuration changes made through the user interface need their own ticket and an export or screenshot of the before and after values, because the application itself does not hold the approval.
What test records prove an ERP change worked before it went live?
Auditors look for dated test scripts, the tester's name, the expected and actual results, and sign-off by the business owner before promotion. For Odoo or ERPNext, the strongest evidence is a repeatable test plan run on a non-production copy, such as an Odoo database duplicated and neutralized for testing or an ERPNext test site, with screenshots or exported results attached to the change ticket. A common gap is that testers run ad hoc checks with no written expectations, which makes it hard to show the control operated as designed. Confirm that test environments are separated from production and that the test data used is recorded.
How do promotion logs show who moved a change into production?
A promotion log shows which build or code version was deployed, when, by whom and under which approved ticket. Auditors test whether the person who deployed was authorized and whether the deployed artifact matches what was tested. In a self-hosted deployment, this evidence comes from the CI/CD pipeline logs, deployment records for Docker images or bench-based releases, and server audit logs for the production host. Gaps appear when developers have direct shell access to production and can copy files without a pipeline record. Ask whether the production image hash or commit ID is recorded for each release.
What user access listings and periodic reviews do auditors need from the ERP?
Auditors ask for a complete listing of ERP users with their roles, status and last login, plus a documented periodic review in which a manager confirms that access still matches the job. In Odoo, the user list and access rights groups can be exported, and in ERPNext, the User and Role Permission Manager reports show roles and document-level permissions. The gap often sits in access granted through identity integration, because LDAP or social login can grant access that does not appear in a local role report. Confirm that terminated employees are disabled in both the directory and the application, and that the review covers segregation of duties conflicts, such as one user able to create and approve vendor payments.
Which parameter and configuration change logs matter for automated controls?
Auditors care about changes to system parameters, tax rates, approval thresholds, number sequences and automated calculations, because PCAOB AS 2201 notes that automated application controls can depend on tables and parameters such as a rate table. In Odoo, configuration changes to settings and chart of accounts are recorded in the chatter or tracking fields for many models, but not every setting is tracked, so verify coverage for each parameter the controls rely on. In ERPNext, the Version doctype records changes to tracked documents, and Server Scripts, which are disabled by default from version 15, are a separate change surface that needs its own log. Build a parameter inventory mapped to each control and check that every item has a change record.
What privileged access logs prove database and administrator actions were controlled?
Privileged access logs show who used administrator, database or operating system accounts, when, and for what purpose, and auditors use them to test the risk that IT staff hold privileges beyond their duties. For a self-hosted Odoo or ERPNext system, evidence includes the Linux host login and sudo logs, PostgreSQL or MariaDB access logs, the application's superuser or Administrator activity, and the approval for any break-glass access. A typical gap is that the database administrator can change financial tables directly, bypassing application logs. Confirm that privileged sessions are recorded centrally, that the Administrator account is restricted, and that database changes outside the application are reviewed.
How do conversion reconciliations prove migrated data was complete and accurate?
Auditors expect data conversion evidence showing that opening balances, open items and master data in the new system agree to the legacy system at cutover, with reconciliations signed by the owner of each balance. Evidence includes record counts, control totals for each entity and currency, trial balance comparisons, and documented exceptions. For Odoo or ERPNext, data is usually loaded through the import tooling, and the ERPNext Data Import tool documentation advises importing only a few thousand records at a time, so batch logs and load files should be retained with the reconciliation. The gap sits in unexplained differences that are carried forward without sign-off. Confirm who approves the cutover reconciliation and that the trial loads used the same process as the final load.
Odoo Community, Odoo Enterprise and ERPNext compared for ITGC
Each route to a self-hosted ERP carries different change, upgrade and support obligations, and those obligations set how often the ITGC change calendar must absorb a version move. The cards below compare the two Odoo editions, ERPNext and a partner-supported option, so the team can match the platform to its control evidence needs.
Odoo Community on self-managed infrastructure
Odoo Community is published under LGPL-3.0 and is the open source core of the Odoo suite. It has no access to the Odoo upgrade service, so every major version move, security patch and rollback test is run by the client or its partner. Under SOX, that means the change approval record, the test evidence for each upgrade and the restore test all sit with the client. Confirm who will monitor security advisories, who approves each upgrade, and how the team will document a version move that is not vendor-assisted.
Odoo Enterprise for regulated deployments
Odoo Enterprise is a paid subscription built on Community, and it is the edition that includes the upgrade service and on-premise activation with a subscription code. Odoo's pricing page states that only the Custom plan can be hosted on Odoo.sh or on-premise and that only Custom includes multi-company, Odoo Studio, external API access and custom modules. ITGC scope should therefore name the plan in writing, because a Standard subscription does not support the on-premise hosting this design assumes. Ask the vendor to confirm the plan in the quote and the activation record.
ERPNext on Frappe supported versions
ERPNext is licensed under GPL-3.0 and runs on the Frappe Framework, which is licensed under MIT. Frappe's policy ties warranty coverage to a listed version and a matching Frappe Cloud support plan, so the ITGC file should record which version and support status applies to each release. Production deployments can use the frappe_docker images and Compose files, which include MariaDB, Redis, workers, scheduler and Nginx services that auditors will ask to see in the change inventory. Server Scripts are disabled by default from version 15, so any enablement needs its own approval entry.
Partner-supported option with written ITGC scope
A third option is to keep either open source platform and buy implementation and support from a partner under a written scope. This suits teams that lack in-house staff for upgrades, testing and access reviews. The contract should specify who prepares change tickets, who performs test runs, who holds administrator access, and which evidence is handed over at each release. Verify that the partner works inside the client's infrastructure and that its support tier matches the version calendar described above.
What drives the cost of ITGC work on an ERP
ITGC cost on a self-hosted Odoo or ERPNext system comes from four components, and each is paid to a different party. The first is management time to define scope: deciding which applications, databases, interfaces and roles fall under the ICFR evaluation, which change categories need approval, and who signs off on each control. That effort is internal and recurs whenever the ERP changes materially. The second is implementation effort from DeployOpen or another partner to configure the controls and evidence described above: approval workflows, test records, privileged access reviews and conversion reconciliations. The third is licensing or subscription, which depends on the platform. Odoo Enterprise is needed for on-premise hosting and the upgrade service, and only the Custom plan includes multi-company and external API access. ERPNext is free to self-host, but Frappe support warranty requires a matching Frappe Cloud support plan. The fourth is recurring control operation: quarterly access reviews, change sampling, and the upgrade test cycle.
The SEC estimated in 2020 that an issuer newly exempt from the Section 404(b) auditor attestation would save about $210,000 per year on average, roughly $110,000 in audit fees and $100,000 in other costs (Release 34-88365). That figure measures the value of the exemption for a company that qualifies for it. It says nothing about what an ERP or its controls cost, and it does not change the requirement for management to evaluate ICFR each year. Treat it as context for the audit side of the budget, not as a benchmark for implementation.
When you request a quote, ask for a written scope that lists each in-scope application and environment, each control area covered, the evidence the partner will deliver and in what format, and which activities are one-time (design, configuration, conversion testing) versus recurring (review cycles, upgrade regression, evidence collection). Ask who performs each task, what the partner does not cover, and how changes to scope are priced. Confirm the Odoo edition, plan and support status or the ERPNext version and hosting model before the quote is final, because these determine the licensing line and the upgrade calendar that drives recurring effort.
Questions buyers ask before hiring help with SOX ITGC on an ERP
Can a self-hosted Odoo or ERPNext system pass SOX ITGC testing?
No platform passes ITGC testing by itself. Auditors test whether the controls around the system operate, and that depends on how the company runs it. SEC guidance (Release 33-8810) says the IT general controls relevant to an ICFR evaluation vary with each company's facts and circumstances, and no SEC rule or PCAOB standard publishes a fixed catalog. Self-hosting gives you control over change approval, access, parameters and data conversion, which is what auditors look at. Whether those controls are designed and operating well enough is a question for your independent auditor. DeployOpen prepares the systems, controls and evidence for that assessment but does not issue audit reports or attestations.
How long does SOX ITGC work on an ERP take, and what drives the timeline?
The timeline depends on scope, which is set in a written, fixed-scope agreement before work starts. The main drivers are the number of ITGC areas in scope, the state of existing change and access records, how many environments the system has, and how much historical data is converted at go-live. Auditors generally test controls over a period, so evidence has to exist for that period. Ask any partner to show how they break the work into phases and which evidence each phase produces. DeployOpen does not publish a price list or timeline; a quote follows from the scope you agree.
What does our team need to provide before ITGC work starts?
Expect to supply the following before a partner can design or test controls:
- A list of the financially relevant modules, companies and reports in the ERP
- Current user roles, access reviews and the people who approve access
- Your change management policy, ticket history and release records
- Configuration and parameter records, including any rate or tax tables that drive automated calculations
- The data conversion plan and reconciliation sign-off from the last migration
Auditor expectations on automated controls and their supporting tables are described in PCAOB AS 2201, so gathering these early avoids rework.
Can our internal IT team run SOX ITGC testing on Odoo or ERPNext without a partner?
Yes, many finance and IT teams run ITGC programs internally, and the decision depends on skills, capacity and independence. Testing the same change or access control you designed, or that your own engineers operate, can weaken the evidence an auditor relies on. Internal teams need knowledge of the ERP's configuration model, its privileged roles and its upgrade process. A partner can help design controls, prepare evidence and run security tests, but management still owns the ICFR assessment under Rule 13a-15(c). Decide who will own each control before you choose the route.
What happens to ITGC controls at each Odoo or ERPNext version upgrade?
Each upgrade is a program change, so it needs the same approval, testing and evidence as any other change. For Odoo, the upgrade service moves a database to a newer supported version through an upgraded test database that should be tested before production, and on-premise use requires an Enterprise subscription. Odoo's standard support covers three years after a major release, and Odoo 20.0 standard support is planned until September 2029. Odoo's documentation says major upgrades are mandatory every two years on Odoo Online and Odoo.sh. For ERPNext, Frappe lists version 15 as supported until the end of 2027 and version 16 until the end of 2029. Plan an upgrade test cycle and a regression test of key automated calculations each time.
Does DeployOpen issue SOX audit reports or attestations?
No. DeployOpen does not issue audit reports, attestations or certifications. Independent auditors perform the ICFR attestation required under Section 404 for applicable issuers, and management performs the annual ICFR assessment. DeployOpen plans, implements, hardens and documents self-hosted open-source systems, prepares controls and evidence for compliance assessments, and runs security testing. Ask your auditor which evidence formats they accept and share that list with any partner before work begins.
How DeployOpen scopes and delivers SOX ITGC readiness on ERP
DeployOpen plans, implements, hardens, documents and supports self-hosted open-source ERP inside the client's own infrastructure. For SOX IT general controls, we prepare the systems, controls and evidence that management and external auditors will test, while the assessments themselves remain with independent auditors.
How we scope
- Written, fixed scope covering the Odoo or ERPNext modules, environments and entities in the ICFR boundary
- Inventory of IT general control areas that affect financial reporting, agreed with your finance and audit teams
- Clear list of what is out of scope, such as operational-only processes, with ongoing support available as a retainer
How we build
- Change management workflow with approval, testing and promotion evidence for every production release
- Role design and segregation of duties matrix mapped to who can post, approve, configure and administer
- Configuration baseline and parameter change logging, plus controls over data conversion and go-live reconciliation
How we hand over
- Control narratives, process flows and test scripts written so your internal audit and external auditors can re-perform them
- Evidence library showing how each control is operated, reviewed and retained over time
- Administrator training and a documented handover of runbooks, access reviews and change records to your staff
How we support
- Retainer support for patching, upgrades and periodic control testing after go-live, agreed in writing
- Impact review of Odoo or ERPNext version upgrades on control design before any production change
- Recurring access recertification and change sampling support ahead of each fiscal year end assessment
Sources and further reading
- PCAOB Auditing Standard No. 5 (now AS 2201) as filed with the SEC ↗
- PCAOB risk assessment standards, including Auditing Standard No. 12 (now AS 2110) ↗
- Commission Guidance Regarding Management's Report on Internal Control Over Financial Reporting, Release 33-8810 ↗
- Odoo standard and extended support ↗
- Supported versions for Frappe products ↗
- Server Script ↗

