Acumatica Modern UI Migration: Move Your Customizations Off Classic UI
Classic UI cannot be enabled in Acumatica 2026 R2. We audit every custom screen, reuse the server-side code that still works, and rebuild the rest in the Modern UI. Fixed price per screen. We respond within 24 hours.
2026 R2 Modern UI Migration Readiness Checklist
Find out exactly which of your customizations move across untouched and which need rebuilding. 8 steps to assess your screens, customizations, and ISV solutions before the 2026 R2 upgrade.
A specialty subcontractor came to Envinse with 22 Classic UI custom screens - including a custom AIA billing screen and a subcontractor compliance tracker. Their VAR had quoted 6 months for the migration.
We audited all 22 screens in 3 days. 14 required full rebuilds, 6 were minor adaptations, 2 were retired as they duplicated native Acumatica 2025 R2 functionality.
We went live 8 weeks after engagement start - 4 months ahead of the VAR's estimate.
Why This Has a Deadline: the 2026 R2 Classic UI Deprecation
Acumatica has been retiring the Classic UI in stages, and 2026 R2 is where that process finishes. Classic UI cannot be enabled in 2026 R2 or any later version. There is no configuration switch, no compatibility mode and no supported way to keep a Classic screen reachable once a tenant is on that build. Every customization that exists only as a Classic UI screen becomes unreachable at the moment of upgrade.
That is the whole deadline, and it is worth being precise about it, because a lot of the commentary around this has been overstated. If you are running a supported build today, your Classic screens are not going to fail on their own next quarter. The pressure comes from your upgrade calendar, not from a countdown clock inside the product. What you cannot do is upgrade to 2026 R2 with Classic-only customizations still in place and expect to sort it out afterwards. The migration has to land before the upgrade, or the upgrade has to wait.
The browser side of this, stated accurately
You have probably read that Chrome is removing XSLT and that this will make Acumatica Classic UI screens stop loading. The first half is true, the second half is not, and the distinction matters when you are deciding how urgent this is.
Chromium announced the removal of the browser's built-in XSLT engine - the same engine Classic UI leaned on to turn its server-rendered output into a page. Acumatica responded with platform patches for 2025 R1 and later builds that preserve Classic UI browser compatibility once that removal ships. On a patched, supported build, Classic UI screens keep rendering. Nobody with a current build is going to open Acumatica one morning and find blank screens because of the browser change.
What those patches do not do is give Classic UI a future inside the product. They keep it working on the versions that still have it. They cannot put it back into 2026 R2, where it no longer exists. So the honest version of the urgency argument is: the browser problem has been handled by Acumatica, and the deprecation has not been, because it is not a defect to be patched - it is the product moving on. Migration is required for anyone upgrading to 2026 R2. It is not required this week for anyone who is not.
The upside is worth naming too. Modern UI is where the platform's newer capabilities live: AI Studio, expanded anomaly detection and AcuChat are Modern UI features, and screens that are still on Classic cannot participate in them. Read our full breakdown of Acumatica 2026 R2 changes →
What Actually Changes: Classic UI and Modern UI Are Different Presentation Layers
The single most useful thing to understand before scoping a migration is that this is a presentation-layer change, not a platform rewrite. Your data model and your business logic are not moving. Your screen definitions are.
Classic UI defines a screen as ASPX/Web Forms markup - a page of Acumatica's own server controls, the PXControls family, laid out declaratively. That markup is turned into a rendered page through an XSLT transformation pipeline, and customizations frequently reach into that pipeline directly with XSLT fragments, or into the resulting page with JavaScript written against specific DOM element IDs.
Modern UI does none of that. Screen definitions are built on Aurelia with TypeScript: a component model, typed view models, and a declarative binding layer between the screen and the graph behind it. There is no XSLT step to hook into and no Web Forms control tree to manipulate. This is why the Modern UI should not be thought of - or described - as an ASPX framework. It is a different client architecture that happens to talk to the same xRP server code your customizations already extend.
That single fact is what makes migration tractable. The graph is unchanged. The DACs are unchanged. What has to be re-expressed is the part that was always about drawing the screen.
What Carries Across, and What Has to Be Rebuilt
In a typical engagement, the majority of the C# in a customization project ships to Modern UI untouched. The following components are normally reusable:
- DAC extensions and custom fields - your extended data model is the same data model. Custom fields defined through DAC extensions continue to exist and continue to be bound.
- Graph extensions - extension classes on the standard graphs carry across as written.
- Server-side business logic - validations, calculations, document flows, integration calls, anything that runs on the server as part of the graph.
- DAC attributes - selectors, defaults, formulas, dimension and period attributes, and custom attributes you have written yourself.
- Server-side PXActions and event handlers - actions and the row/field event handlers that back them remain the mechanism the Modern UI screen invokes.
The components that typically require review or redevelopment are the ones that are specific to how Classic UI drew the page:
- ASPX page layouts - the screen's structure, containers, tabs and field placement have to be expressed in the Modern UI screen definition rather than in Web Forms markup.
- Classic UI PXControls - Classic-only server controls have Modern UI counterparts with different capabilities and different configuration; the mapping is deliberate, not mechanical.
- XSLT fragments - any customization that injected or overrode XSLT has nothing to attach to in the Modern UI and is redeveloped.
- DOM-dependent JavaScript - scripts written against Classic element IDs or the Classic control tree break by construction; the behavior is reimplemented within the Aurelia/TypeScript model.
- Client-side grid customizations - custom column behavior, in-grid editors, client-side sorting or formatting hooks and grid event wiring are rebuilt against the Modern UI grid.
- Classic SmartPanels and other UI-specific behavior - SmartPanel dialogs, Classic-specific popups, and any interaction pattern that was implemented in the Classic client rather than on the server.
| Layer | Classic UI | Modern UI | Migration impact |
|---|---|---|---|
| Data model | DACs, DAC extensions, attributes | Identical | Reuse |
| Business logic | Graph extensions, PXActions, event handlers | Identical | Reuse |
| Screen definition | ASPX / Web Forms markup | Aurelia + TypeScript components | Rebuild |
| Rendering | XSLT transformation pipeline | Client-side component rendering | XSLT fragments redeveloped |
| Controls | Classic PXControls | Modern UI control set | Mapped, then rebuilt |
| Client scripting | DOM-bound JavaScript, grid hooks, SmartPanels | TypeScript view models and bindings | Reimplemented |
The Screen-by-Screen Audit
We do not quote a migration by headcount or by month. We quote it by screen, and to do that we have to look at every screen. The audit is the first deliverable of any engagement and it stands on its own - if you take the audit and hand the build to somebody else, that is a legitimate outcome and the document is written to support it.
For each customized screen we record what the customization project actually contains, not what the original specification said it would contain. That means reading the code: which DACs and DAC extensions are involved, which graph extensions and event handlers back the screen, which PXActions it exposes, what the ASPX layout declares, whether any XSLT was injected, what JavaScript is attached and what it binds to, whether the grid has been customized client-side, and whether SmartPanels or other Classic-specific interactions are in play.
We also record the things that decide effort but never appear in a feature list: field-level security and role-based access rules mapped against the current layout, screen-level personalizations users have come to depend on, generic inquiries and dashboards that point at the screen, integrations that call into it, and ISV solutions sitting on top of it. ISV dependencies are worth checking early, because your migration timeline is partly the vendor's timeline.
Reuse, adapt, rebuild, retire
Every screen comes out of the audit in one of four buckets, and the mix is what your quote is made of:
- Reuse - the server-side code carries across and the screen definition needs only mechanical translation. Cheapest and fastest, and usually more of the estimate than clients expect.
- Adapt - the logic is sound but the presentation needs meaningful rework: a Classic control with no direct counterpart, a grid with client-side behavior, a layout that has to be reconsidered for the Modern UI.
- Rebuild - the screen is reconstructed. This is where pre-2025 R2 screens with heavy XSLT and DOM-bound scripting land, and where the majority of the budget goes.
- Retire - the screen is not migrated at all, because native Acumatica now covers it, or because the workflow it supported no longer exists. The retire pile is consistently larger than clients expect, and deleting a screen is the cheapest line in any migration.
The classification comes with the reasoning attached, so you can argue with it. Clients move screens between buckets during the review, usually from rebuild to retire once somebody confirms nobody has opened it in two years.
Development, Regression Testing, UAT and Rollback
Once the classification is agreed, the build runs screen by screen in a sandbox against a copy of your configuration - not a generic demo tenant, because a generic tenant hides exactly the interactions that cause problems. Server-side code that is being reused is left alone wherever possible; the work concentrates on the Modern UI screen definitions, the control mapping, and reimplementing client behavior in TypeScript.
Regression testing runs against the behavior you have today, not against the specification. For each migrated screen we test the document flow end to end, the actions and their side effects, validation and defaulting behavior, selectors and lookups, field-level security by role, and any integration that touches the screen. Screens that were reclassified as adapt or rebuild get the most attention, because that is where behavior can drift quietly.
UAT happens in your own test environment with your own users and your own data, on a defined window with a written scope of what is being signed off. We would rather hold a release for a UAT finding than ship a screen that technically works and is wrong for the way your team uses it.
Rollback planning is part of the deployment package, not a contingency we improvise. Every production deployment ships with the customization package versioned, a documented rollback path back to the previous package state, and a defined set of checks to run immediately after go-live. Where the migration is being paired with a 2026 R2 upgrade, we sequence the two deliberately, because after the upgrade Classic UI is no longer there to fall back to - which makes pre-upgrade validation on the migrated screens the point where problems have to be caught.
Deployment includes a customization inventory and upgrade notes, and 30 days of support after go-live.
Fixed-Price, Per-Screen Scoping
The quote is fixed and it is broken down per screen, with the audit classification next to each line. You can see what each screen costs, why it costs that, and what happens to the total if you retire it instead of rebuilding it. That structure exists because migrations are one of the easiest projects to lose control of on time and materials: the work is repetitive, the surprises are all in the individual screens, and an hourly engagement gives nobody an incentive to shrink the scope.
Practically, simple screen customizations land in the 1-3 day range. Complex custom modules with real business logic, multiple screens and integration surface typically run 2-4 weeks. Scope changes are requoted as a delta rather than absorbed quietly, and screens you decide to retire during the review come straight off the total.
You can also buy the audit on its own. Some clients want the inventory and the per-screen classification in order to budget for next year, or to give their own team a plan. That is a fine outcome and the deliverable is written to be useful without us.
Modern UI Migration for VARs: White-Label Delivery Under NDA
If you are a VAR with a book of clients still on Classic UI, the 2026 R2 deadline arrives for all of them at once, and it collides with the upgrade work you were already committed to. Envinse delivers this as white-label Acumatica development: we audit and migrate your clients' environments under your brand, on your schedule, to your documentation standards.
Full NDA from the first conversation. Your client relationship stays yours - we do not contact your customer, we do not appear in their environment under our name, and we do not use the engagement as a reference without your written approval. Deliverables ship in your format with source, customization inventory and upgrade notes, so your team can own the result afterwards. Per-screen fixed pricing works the same way for you as it does for a direct client, which makes it straightforward to mark up and quote onward with a known margin.
The audit is often the most useful piece for a VAR. Running it across your Classic UI client base gives you a prioritized list - which tenants have the heaviest rebuild exposure, which are nearly clean, and which have ISV dependencies that need a vendor conversation before anything else can be scheduled.
VAR backlog support: engagement models, NDA and IP terms →
How to evaluate a white-label Acumatica development partner →
Why Choose Envinse
Highest certification tier for development and implementation partners
No hidden fees, no scope creep charges
Every build follows official xRP framework standards
Configured and deployed on Acumatica 2026 R1
Full NDA, your brand
Fixed-price quote after technical review
How We Work
Frequently Asked Questions
What is Acumatica Modern UI migration?
It is the process of moving custom screens off the Classic UI and rebuilding their presentation layer for the Modern UI. Classic UI screens are defined with ASPX/Web Forms markup rendered through an XSLT pipeline; Modern UI screens are built on Aurelia with TypeScript. Server-side code - DAC extensions, graph extensions, attributes, PXActions and event handlers - is largely reusable. Screen layouts, Classic PXControls, XSLT fragments and DOM-dependent JavaScript are what get reviewed and redeveloped. It is not an automated conversion.
Can Classic UI still be enabled in Acumatica 2026 R2?
No. 2026 R2 completes the deprecation: Classic UI cannot be enabled in 2026 R2 or any later version. Customers on earlier supported versions can keep running Classic UI for now, but any customization that exists only as a Classic screen has to be migrated before the 2026 R2 upgrade, because there is no Classic UI to fall back to afterwards.
Do Classic UI screens stop working because Chrome is removing XSLT?
No. Chromium announced the removal of the browser's built-in XSLT engine, which Classic UI relied on for rendering, and Acumatica released platform patches for 2025 R1 and later that preserve Classic UI browser compatibility. On a patched, supported build, Classic UI screens keep rendering. Migration is still required for anyone upgrading to 2026 R2, because Classic UI is no longer available in that release.
Which customizations can be reused in the Modern UI?
DAC extensions and custom fields, DAC attributes, graph extensions, server-side business logic, and server-side PXActions and event handlers normally carry across unchanged, because the Modern UI replaces the presentation layer rather than the data or business layer. ASPX page layouts, Classic PXControls, XSLT fragments, DOM-dependent JavaScript, client-side grid customizations and Classic SmartPanels require review or redevelopment.
How long does Acumatica Modern UI migration take?
Simple screen customizations migrate in 1-3 days. Complex custom modules with business logic, integrations and multiple screens typically take 2-4 weeks. We audit every screen and provide a per-screen fixed-price quote before any work begins.
Will my Acumatica data be affected during Modern UI migration?
No. Migration touches the presentation layer and, where required, the customization project that wraps it. Your database, transactions and core configuration are not modified. We always migrate in a development environment first and require UAT sign-off before any production deployment, with a documented rollback plan.
Get a Readiness Audit or a Fixed-Price Quote - We Respond Within 24 Hours
Tell us your Acumatica version and roughly how many custom screens you run. We come back with a per-screen plan.
Email: acumatica@envinse.com · Phone: 737-377-3839
Get a Fixed-Price Quote →