Acumatica Customization Project Publish Failed: How to Fix It
Acumatica customization project publish failed
Also searched as
- Acumatica publish customization compilation error
- Acumatica customization project validation failed
- Acumatica publish stuck or timeout
- Acumatica customization not applied after publish
Short answer
A failed publish in Acumatica means the platform could not validate, compile or apply the customization package to the website and database. Open the Publish Customization Project dialog, read the Compilation log and the Validation log, fix the first error (usually a C# compile error, a missing DAC field or a conflicting project), and publish again, ideally on a test tenant first.
Applies to: Acumatica Cloud ERP 2022 R1 and later, on-premises and SaaS tenants, Customization Projects screen SM204505
How to diagnose and fix a failed publish
- 1Open Customization > Customization Projects (SM204505), select the project and click Publish. Watch the log pane; do not close it until it finishes.
- 2Read the log from the top. The first red error is the real one; later errors are usually side effects of the first compile failure.
- 3If the error mentions CS (for example CS0246 type not found), open the Customization Project Editor, go to Code, and fix the C# in the extension class or add the missing reference or namespace.
- 4If validation fails on a screen or Site Map node, check Screens in the project for a missing or renamed graph, and check that the DAC fields you bound in the layout still exist.
- 5If two projects touch the same page or class, open Customization > Customization Projects, review Published projects, and unpublish or reorder the conflicting one. Check the Publish order in the Customization Project Editor.
- 6For a timeout or a locked database message, wait for the current publish to finish, then use Unpublish All Customization (if allowed) or restart the application pool for the instance and retry.
- 7Retry with Publish with Cleanup only when you need to remove stale files from App_Data or Bin; it republishes everything, so schedule it outside business hours.
- 8After success, hard refresh the browser (Ctrl+F5) and confirm the screen change, then export the project package and keep it in source control.
What a publish actually does
Publishing a customization project does more than copy files. Acumatica validates the project, compiles any C# code items into a temporary assembly (the customization assembly in the website Bin and App_Data\CustomizationPlugin area), applies database scripts and Generic Inquiry, report and Site Map changes, and then recycles the application so the new assembly is picked up.
Because the whole website recompiles, a single bad file can fail the entire publish. The logs are split: the Compilation log lists C# problems, the Validation log lists structural problems such as missing screens or duplicate items. Always read both.
Customization > Customization Projects (SM204505) Select project > Publish Logs: Compilation log / Validation log / Database scripts log
Common causes, in order of frequency
The most common cause is a compile error: a typo in a PXCacheExtension, a DAC field defined twice, a call to a graph method whose signature changed after an upgrade, or a missing using directive. The error code and line are shown in the Compilation log.
Second is an upgrade mismatch. A project written for one build can break on another because a base DAC field or a graph virtual method was renamed or changed. Open the project in the Customization Project Editor after an upgrade and compile before publishing to production.
Third are project conflicts and dependencies: two projects patching the same page with different layout edits, a code item that references a class from an unpublished project, or a database script that expects a column another project adds. Define publish order and keep each project focused.
A safe publishing routine
Use a separate test or UAT tenant, publish there first, and compare the log with production. Keep each customization project small and named for one feature so a failure points to one area.
Keep the exported project zip in source control, with C# in a Visual Studio solution when the code is large, and use the Customization Project Editor only for packaging. On-premises, back up the website folder and the database before a Publish with Cleanup.
Common pitfalls
- !Fixing the last error in the log instead of the first one; later errors are often cascades of the first compile failure.
- !Publishing straight to production without compiling on a test tenant after an Acumatica upgrade.
- !Two projects customizing the same screen without a defined publish order, so the layout of one silently overwrites the other.
- !Closing the browser during publish on a large project and leaving a half-applied state that needs an unpublish and retry.
- !Using Publish with Cleanup during business hours; it recycles the application and logs users out.
How an ERP-grounded AI assistant handles this
An AI assistant grounded in your Acumatica build can read the compilation log, map the error to the extension class and DAC it refers to, and propose the corrected C#. Treat its output as a draft: compile it in a test tenant and review it before any publish to production. ERPray is read-only by default, so it helps with diagnosis and does not publish anything.
Frequently asked questions
Where do I find the publish log in Acumatica?
Open Customization Projects (SM204505), select the project and click Publish. The dialog shows the Compilation and Validation logs live. After closing, reopen Publish or use the Customization Project Editor to view the last result and any compile errors.
Can I roll back a bad publish?
Unpublish the project from SM204505, or Unpublish All Customization, which removes customizations from the site. Database changes made by scripts are not automatically reverted, so keep a backup and test the scripts on a non-production tenant first.
Why does my change not show after a successful publish?
Browser cache is the usual reason. Hard refresh with Ctrl+F5, or sign out and in. If the field is still missing, check the layout was saved in the Screens editor and that the project is marked as published, not just saved.
Does publishing affect users logged in?
Yes. Publishing recycles the application, so active sessions are interrupted and unsaved work can be lost. Publish outside business hours and tell users first, especially for Publish with Cleanup.
Related
How to Add a Custom Field to the Sales Order Screen in Acumatica
There are two routes. For simple data capture use Attributes (Configuration > Common Settings > Attributes), assigned to a class, which show up without code. For a real database column with logic, create a DAC extension (PXCacheExtension on SOOrder) in a Customization Project, add the field to the screen layout in the Screen Editor, and publish.
How-toHow to Create a Generic Inquiry in Acumatica
Generic Inquiries (GI) are Acumatica's no-code query builder for joining tables, adding filters, and exposing the result as an inquiry screen, dashboard data source, or API endpoint. Open System > Customization > Generic Inquiry, add your base table, define joins and conditions, then run and save. No SQL or customization project is required.
How-toHow to Create an Import Scenario in Acumatica
Import scenarios in Acumatica live under System Integration > Import Scenarios: you pick a source (a file or a Generic Inquiry), map each source field to a target DAC field on the destination screen, then run or schedule the scenario. A small sample file run through the wizard first makes the field mapping step far faster than mapping blind.
Error fixFix Odoo AccessError: You Are Not Allowed to Access Records
Odoo raises AccessError when a user's security groups do not grant a CRUD right on a model through ir.model.access.csv, or when an ir.rule record rule filters the specific record out for that user or company. Fix it by adding the user to the group named in the error, editing the model's access rights, or reviewing the record rule's domain under Settings > Technical > Security.
How-toHow to Void a Check in Sage 100
Sage 100 voids checks through Accounts Payable > Main > Check and Payment Voiding. Select the bank code, choose the check number, and Sage reverses the Cash Disbursements Journal entry and reopens the invoice it paid. A check that already cleared in Bank Reconciliation or falls in a closed period needs an extra step before it can be voided cleanly.
How-toHow to Run Requirements Planning (MRP) in SYSPRO
SYSPRO's MRP engine lives under Planning and Scheduling > Requirements Planning. Set planning parameters per warehouse, run the Requirements Calculation to net demand against supply, then review and release the resulting suggestions as purchase requisitions or work orders. A full regenerative run typically runs on a schedule, with net change runs in between to pick up new activity.
AI for ERPAI for Acumatica Manufacturing Edition, Built on Your Own Data
Add AI to Acumatica Manufacturing Edition without giving up control of your shop and cost data. Private LLMs and agents grounded in your Acumatica instance.
Stuck on Acumatica Cloud ERP?
Talk to engineers who work inside Acumatica Cloud ERP every week, and who build private AI that answers these questions from your own ERP data.