Dynamics 365 to SAP Migration: SOX Compliance Guide
Moving from Dynamics 365 Finance & Operations to SAP means trading a native, no-additional-license SoD rules engine and a duty/privilege/permission/role hierarchy for SAP's authorization-object model, PFCG roles, and — if you license it — a separate GRC Access Control implementation. Organizations often make this move for SAP's finer-grained field-level access control or to consolidate onto a single ERP across a multi-entity structure that already runs other SAP modules, but the SOX control implications are substantial: nothing about how Dynamics 365 tracked change or enforced SoD carries over mechanically, and a control that leaned on Microsoft Purview to catch Power Platform activity has no direct SAP analog at all. This guide covers the sequence for preserving ICFR control coverage through that cutover, not the general technical migration plan.
Before you start
- ·Current-state Dynamics 365 control matrix documented, including every ICFR-relevant control's owner, frequency, and evidence source — table-level change tracking, Purview logs, SoD rules engine reports
- ·SoD conflict inventory pulled from the Dynamics 365 rules engine, including any documented exceptions, reviewed and signed off by the SoD risk owner
- ·SAP role design workshop completed with Internal Audit or a control-design resource present, building PFCG roles from the target-state SoD matrix rather than from the Dynamics 365 duty structure
- ·Decision made on whether SAP GRC Access Control will be licensed for ongoing SoD management, since it is a separate purchase and implementation distinct from the native tool being retired
- ·Target-system control matrix drafted mapping each Dynamics 365 control to its SAP equivalent, with any control relying on Power Platform/Purview evidence explicitly flagged as needing a new evidence source
Migration steps
Freeze and export the Dynamics 365 control baseline
Capture a full snapshot before SAP configuration begins: security role and duty assignments, the SoD rules engine's current configuration and open conflict exceptions, table-level change tracking history, Purview logs covering Power Platform activity for the trailing 12 months, and the SOX control matrix with its evidence mapping. This baseline is what the SAP design gets reconciled against and the record that shows nothing was lost in the switch.
Decide the SoD tooling strategy before designing SAP roles
Unlike Dynamics 365, SAP does not ship a native SoD rules engine at no extra cost — GRC Access Control is a separately licensed and implemented product. Decide early whether the organization will license it, use a third-party SoD tool, or run a manual matrix, because this decision shapes how PFCG roles get designed and tested. Building roles first and bolting on SoD tooling afterward routinely produces a role catalog that has to be substantially reworked once real conflict analysis runs against it.
Re-map controls to SAP's authorization-object model
Translate Dynamics 365 duties and privileges into SAP authorization objects and PFCG roles control by control. SAP's field-level granularity can reproduce a Dynamics 365 restriction more precisely in most cases, but it also means more configuration decisions per control — a restriction that was one duty assignment in Dynamics 365 might require several authorization-object field values combined correctly in SAP. For change management, replace Dynamics 365's table-level tracking with SAP's transport-based record (STMS), and separately confirm there is no equivalent gap to Purview's Power Platform coverage — SAP's custom Z-program and transport-based development carries its own distinct risk surface that needs its own control design, not a direct substitute for the Purview control.
Design PFCG roles around the target SoD matrix, not around the Dynamics 365 duty structure
Mapping each Dynamics 365 duty to 'the closest SAP transaction' produces composite roles shaped by the old platform's logic rather than the organization's actual conflict boundaries. Build SAP roles outward from the SoD matrix — which authorization-object and transaction combinations must never coexist — using the more granular SAP model to enforce restrictions Dynamics 365 could only approximate.
Re-provision access role by role against the SAP SoD rule set
Run cutover provisioning through the redesigned PFCG role catalog, checking every assignment against the SAP SoD rule set (GRC Access Control or the manual equivalent) before granting access. The common failure is provisioning teams granting a role bundle that approximates a user's prior Dynamics 365 access rather than one derived from the SoD-clean design. Make the SoD check a hard gate, routing conflicts to a documented compensating-control decision rather than silent grants.
Document compensating controls for the cutover window
Expect reduced control strength immediately after go-live — a newly implemented GRC Access Control rule set typically needs at least one operating cycle to tune, and transport-based change evidence needs a full change cycle to demonstrate it's capturing the right detail. Identify affected controls, the compensating control, its owner, and retirement criteria.
Run a full control test cycle in SAP before closing the migration
Before declaring the project done, test every ICFR-relevant control live in SAP — access review, SoD scan, transport sample, key reconciliations — and reconcile against the pre-migration Dynamics 365 control matrix, with particular attention to whatever replaced the Purview-covered Power Platform controls. Findings here are fixable within the project; the same findings found later by an auditor are a control deficiency.
Where SOX continuity breaks
- ·SAP role design started before deciding on SoD tooling (GRC Access Control, third-party, or manual), producing a role catalog that has to be substantially reworked once real conflict analysis is applied
- ·PFCG composite roles built to replicate the shape of Dynamics 365 duty assignments, missing conflicts that only appear at SAP's finer authorization-object grain
- ·No SAP-side equivalent designed for the Power Platform/Purview control, leaving whatever risk that control covered — direct writes to financial data outside standard workflow — unaddressed in the new environment
- ·Change-management evidence gap at cutover — Dynamics 365's table-level tracking retired before SAP's transport logging is confirmed capturing equivalent creator/approver/timestamp detail in production
- ·Compensating controls for the cutover window never formally retired once GRC Access Control or the SoD rule set stabilizes, leaving a manual workaround running indefinitely
After the cutover
After cutover, run a parallel-testing period — typically at least one fiscal close cycle — testing key controls against both the retained Dynamics 365 evidence and the new SAP evidence trail, with variances investigated before Dynamics 365 access is fully retired. The first control-testing cycle run entirely in SAP, with GRC Access Control or the chosen SoD tool stabilized, becomes the baseline for assessing whether the migration held control effectiveness.
Common questions
Not strictly — a manual SoD matrix or a third-party tool can substitute — but SAP does not ship native SoD conflict detection the way Dynamics 365 does, so some tooling decision has to be made before role design, not after. Most organizations moving to SAP at scale do license GRC Access Control specifically because manual SoD checking doesn't hold up well against SAP's larger authorization-object surface.
Book an assessment
Get migration-specific SOX control continuity guidance for Dynamics 365 to SAP.
Book an Assessment →