Introducing Acumatica Cloud ERP: 2026R2
Technical discussions focused on Customizations for developers. See Low Code | No Code Forum for non-technical discussions
Recently active
I have a typescript extention that correctly adds a new action to the item view in AR301000. The action should only be enabled depending on certain criteria for each ARTran line on the invoice. I have read the examples for the @updateDecorator which I understand is the correct way to update an existing decorator in an extention. I have added the following to my extention of the ARTran view:import { PXActionState, updateDecorator } from "client-controls";import { ARTran } from "src/screens/AR/AR301000/AR301000";export interface AR301000_MyExt extends ARTran { }@updateDecorator("gridConfig", "syncPosition", true)export class AR301000_MyExt { AssignOptions: PXActionState;}The action is displaying but the RowSelected event in the GraphExtention is not being called. I have also tried with a delegate as follows:import { PXActionState, updateDecorator } from "client-controls";import { ARTran } from "src/screens/AR/AR301000/AR301000";export interface AR301000_MyExt extends ARTran { }@updateDe
Is it possible for a customization project to receive an event when a file is attached to a record (project, invoice, etc.)?The goal is to force a change to the LastModifiedDateTime of the project (for example) when a file is added so that the REST API will return the project when filtering by timestamp, since it seems that Acumatica doesn’t update the timestamp automatically when a file is added.I have code that was generated with assistance from AI but I’m not sure if the approach is even valid. Should this RowInserted event for NoteDoc work and is the call to SetStatus() sufficient to update the LastModifiedDateTime value?Trace information confirms that the extension is being loaded and a different event is received but not the event for NoteDoc. public class ProjectEntry_Extension : PXGraphExtension<ProjectEntry> { public static bool IsActive() => true; public ProjectEntry_Extension() { PXTrace.WriteInformation("ProjectEntry_Extension
Is it possible to add form-specific descriptions for custom fields added as extensions of existing DAC and custom screens? I can extend the wiki page for an existing screen but it looks like I cannot include a single wiki page as part of the customisation and captions are not linked to a specific field, they just show as part of the page help menu and no question mark is associated to the custom field.If someone could point me in the right direction it would be appreciated.Thank you
If you build ISV solutions for Acumatica, there is a new rule in the technical validation for versions 2026 R1 and above:Workflow Customization via UI is not allowed for ISV solutions.If your solution ships a workflow change that was built in the Customization Project Editor, expect to see this in your validation report. This article covers what the rule means, the ways to customize workflows, why Acumatica is restricting the UI approach for ISVs, and what to do instead.A Quick Refresher: How Workflows Can Be CustomizedA workflow describes how the state of a record changes as users work on a form. It is a state machine: states, transitions between them, actions that trigger the transitions, conditions, and field and action properties that depend on the current state. Acumatica gives you several ways to customize one.Workflow editor in the Customization Project Editor (UI). You open a screen's workflow in the customization project, add actions, states, transitions or conditions visually
Hi everyone,I'm customizing the existing TaskID field from the POLine DAC on the Subcontract screen (SC301000) to allow selecting tasks belonging to completed projects.Currently, when I remove the hold from a subcontract, I receive the following error:The {0} project is completed.Customization Codepublic class SubcontractEntry_Extension : PXGraphExtension<SubcontractEntry>{ [PXDefault( typeof(Search<PMTask.taskID, Where<PMTask.projectID, Equal<Current<POLine.projectID>>, And<PMTask.isDefault, Equal<True>>>>), PersistingCheck = PXPersistingCheck.Nothing)] [PXRemoveBaseAttribute( typeof(ActiveOrInPlanningProjectTaskAttribute))] [PXDimensionSelector( "PROTASK", typeof(Search<PMTask.taskID, Where<PMTask.projectID, Equal<Current<POLine.projectID>>>>), typeof(PMTask.taskCD), typeof(PMTask.taskCD),
How to enable add to grid only one row for some conditions ?
I am migrating a 25R1 Self Service Portal to 26R1. I have the main site running in 26R1 with my customizations.I installed the portal against my 26R1 database. I created a new VS project and copied in my code from the 25R1 stuff. It is all kinds of broken. The PX.Objects.SP is gone. I added PX.Objects.Portals.dll into my project and it resolved some of the bad references.Does anyone know what assembly I need for PortalSetup? I also used SP.Objects.IN.Descriptor. That is missing too.Is there some reference material as to what I need to do to fix my bad references? Sorry if it is something I should know about already, but I am not able to find anything.
Can standard regular expressions actually be used as an input mask for PXTextEdit or PXMaskEdit UI controls as this article states?https://help.acumatica.com/(W(17))/Help?ScreenId=ShowWiki&pageid=9b12bbba-a619-43e4-8335-11ffff13573bIf so, can someone point me to an example? Setting the input mask to anything other than basic Acumatica mask characters as shown in the article below results in the regex string showing in the field itself.https://help-2022r2.acumatica.com/(W(2))/Help?ScreenId=ShowWiki&pageid=9bec9bb3-3363-4649-948f-7a55e9c048a1
We plan to enable Modern UI for users starting from 2026 R1. So I finished migration and testing on my local 2026 R1 instance, and I can publish the project normally here.I know this is not a standard practice, but I just wanted to see how Modern UI works in a real environment. Therefore, I tried publishing this project to our online test environment(2025R2), which is a clone of our production environment (2025R2).Strangely, the publication failed, and no additional error details were shown. I tried a common workaround:removed all Modern UI files and republished the project, and it succeeded. But after putting the Modern UI files back, the publication failed again.---This workaound does not work for me.Then I ran NPM commands manually. Building a single screen, an entire module, or executing npm run build-dev -- --env customFolder=development all completed successfully. I could also see the updated Modern UI changes on the pages.---This is my workaourndI have achieved my original goal
Hi,I'm developing a custom setup screen in Acumatica 2025 R2 (Modern UI) that maintains configuration settings at the organization level.The requirement is to maintain one setup record per OrganizationID. Multiple branches belonging to the same organization should access and update the same configuration record.I'm experiencing an issue where the existing record is successfully retrieved from the database and displayed on the screen. However, when I modify a field and attempt to save it for the first time, Acumatica throws:Error: Another process has added the 'CustomOrgSetup' record. Your changes will be lost.Interestingly, when I retry the operation, the record saves successfully.I'm trying to understand whether my custom view delegate is interfering with Acumatica's normal cache and persistence handling. 1. DAC DefinitionOrganizationID is the primary key.[Serializable][PXCacheName("Custom Organization Setup")]public class CustomOrgSetup : PXBqlTable, IBqlTable{ #region Organizatio
We are using Acumatica 24R2. I have successfully created a tax provider to call TaxClouds API to get sales tax data using the instructions at:https://blog.zaletskyy.com/post/2024/11/25/how-to-implement-a-custom-tax-provider-in-acumatica This works on a local development instance of Acumatica 24R2. The tax plugin appears in the list of tax plugins on the Tax Providers screen automatically after publishing the customization. When I try to move the customization to the Cloud version it does not seem to attempt to register it and the plugin does not appear in the selector on the Tax Providers page.I also attempted to publish the bare-bones tax provider from the link as a test and that also fails to register on the cloud instance. Am I missing something obvious that would allow it to appear? Is it just not allowed on the cloud version? Any help would be gratefully received, Phil
We just open-sourced a small customization package that adds OpenRouter (Direct) as a provider on Agent LLM Connections (ML201000) in 2026 R2 (built against 26.200.0334). If you haven’t used OpenRouter, it’s a single API and a single bill in front of hundreds of models from OpenAI, Anthropic, Google, Meta, Mistral, DeepSeek and others. That makes it easy to put a cheap, fast model on classification agents and a stronger one on summaries, compare them on real records, and switch when something better or cheaper ships, all without separate vendor accounts. It can also route around a provider that’s down, and your account settings control which upstream providers see your data. Out of the box, AI Automation agents reach models through Acumatica’s cloud proxy and its fixed provider list. The platform also has a hidden “direct provider” path that builds the chat client inside the site; the only one shipped is Azure (Direct). This package registers another direct provider that points the sit
I’m trying to work out how to acheive the following and I’m confused:I’ve extended the non inventory item to contain details about licensing, options and if the product is licensed.I’ve made the required changes to the invoice entry screen so when an item is added the purchased options can be added. I have relaised i could of done this another way, but I’ll stick to my approach for now.When the license is paid I would like to create a seperate license record for each licensed item. We are using some external logic to create the key to ship to the customer.The license is managed on a seperate graph. How do I execute the create license action when the invoice is closed. The license logic is a long running operation.I have looked at workflows, but they only seem to be able to transition state. I have also looked at business events, with a cutom action on the Invoice Entry screen, but the custom Action is never available as a scenario. Can actiosn on grpah extentions appear in the Business
I'm working on an Acumatica customization where I need to retrieve the BAccount associated with the current branch. If there is no branch configured and the instance has only an organization, I need to retrieve the organization's BAccount instead. And i working in a single tenant instanceI'm currently using the following code:PXAccess.MasterCollection.Branch currentBranch = PXAccess.GetBranch(PXAccess.GetBranchID());BAccount bAccount = BAccount.PK.Find(Base, currentBranch.BAccountID);BAccountQAExt branchQAExt = bAccount?.GetExtension<BAccountQAExt>();if (branchQAExt == null){ string msg = "Return warehouse or location is not configured for this branchID."; throw new PXException(msg);}This works correctly when the organization has branches. However, when the instance has only an organization and no branches, BAccount.PK.Find() returns null.I verified the following through debugging and by checking the database directly: PXAccess.GetBranch(PXAccess.GetBranchID
We uploaded the latest version of our customization project and got back the following error, however nothing explains why the Project Name is invalid it publishes without issue on our instances.Could someone point me to what could be wrong? PacejetIntegration252_102: OAuth import failed; native authentication fallback was used.PacejetIntegration252_102: {"log":[{"timestamp":"2026-10-19T16:20:28.5525052Z","logType":"information","message":"Create new project: PacejetIntegration252_102"},{"timestamp":"2026-10-19T16:20:28.5995972Z","logType":"trace","message":"System.Exception: Invalid project name\r\n at Customization.CstDbStorage.ValidatePackageName(String name)\r\n at Customization.CstDbStorage.CreateNewProject(String name, Byte[] data, Nullable`1 level, String description)\r\n at Customization.CstWebsiteStorage.<>c__DisplayClass72_0.<ImportCustomizationProject>b__0(CustomizationResultData result)\r\n at Customization.CstWebsiteStorage.ExecuteCustomization[T](Acti
Has anyone managed to sucessfully add a new barcode step to a WMS form. My code appeared to working fine, but replacing the transitions breaks the confirm package and confirm shipment buttons for some reason. Basically in pick pack ship in pack mode, I need it to tell the user to scan a custom field value for the package. And it seems to works if I do this in a scanextension script: [PXOverride]public virtual ScanMode<PickPackShip> DecorateScanMode(ScanMode<PickPackShip> original, Func<ScanMode<PickPackShip>, ScanMode<PickPackShip>> base_DecorateScanMode){ // Call the base code to get the original mode var mode = base_DecorateScanMode(original); //return mode; if (mode is PickPackShip.PackMode packMode) { packMode.Intercept.CreateStates.ByAppend(basis => new ScanState<PickPackShip>[] { new BoxPackageTransferLabel() } ); packMode // Replaces the previous implementation with a new one.
Hi everyone,I am working on Acumatica 26R1 and I need to make three specific fields (externalRef, subject, and ownerID) editable on the Project Quotes screen (PM304500 / PMQuoteMaint) across all document statuses, except when the quote status is 'Closed'.I attempted to achieve this using a standard graph extension with the RowSelected event, but the fields remain grayed out/locked on the screen: using PX.Data;using PX.Objects.PM;namespace PX.Objects.PM{ public class PMQuoteMaint_Extension : PXGraphExtension<PMQuoteMaint> { protected void _(Events.RowSelected<PMQuote> e) { PMQuote row = e.Row; if (row == null) return; // Goal: Allow editing only if the quote is NOT Closed if (row.Status != PMQuoteStatusAttribute.Closed) { Base.Quote.AllowUpdate = true; Base.Quote.Cache.AllowUpdate = true; PXUIFieldAttribute.SetEnabled<PMQuote.externalRef&
I’m building a custom Modern UI screen that uses the Bryntum Calendar component uses. The screen is a view-only month calendar.Error when publishing the customizationModule not found: Error: Can't resolve '@bryntum/calendar' in …TS2307: Cannot find module '@bryntum/calendar' or its corresponding type declarations.package-lock.json shows that @bryntum/calendar is linked locally, not downloaded from npm:"node_modules/@bryntum/calendar": { "resolved": "node_modules/ext-packages/bryntum-calendar", "link": true},"client-controls": { "version": "file:..\\dist\\packages\\client-controls.tgz", "requires": { "@bryntum/calendar": "file:../ext-packages/bryntum-calendar" }}
Hi All, have another stupid question and if this is covered already, please direct me to it. But we have a custom built ‘Import Scenario’ which take a CSV file and creates customers/supplier/invoices/payments etc. For a certain import type, I want to change a logic of certain data so how it ends up in MYOB eventually? Is this possible to do by my own, without MYOB support? If I try Customisation button it says to ‘Select Project’ or ‘Edit Project’ and then I am prompted to enter the project name which I do not know. So thought to check here for help.
Hello all,I have been working on an automation to place the SO in BackOrder status if the order isnt completely shipped. The scenario is for Drop Shipments.I created a GI: If I disable the last 2 conditions, the biz event automation works perfectly fine. However if any one of the last 2 conditions or both of them are enabled the biz event doesnt work at all.My condition to display the orders whose Shipped Qty >0 & <> Order Qty. Reason being the Unshipped qty is a nonexistent field in DB: Is there anything I’m missing or doing wrong? Any help would be appreciated. Also attaching the XML of the GI.
Hi,One of our automation schedules failed before the scheduled screen could initialize. The only exception available in System Monitor is:PX.Data.PXInvalidOperationException:The initialization of the form failed due to an unexpected error.The execution of the schedule was canceled.at PX.Data.Process.ScheduleProcessor.SetCurrentScheduleAndCollectScrenInfo(...)at PX.Data.Process.ScheduleProcessor.ProcessSchedule(...)at PX.Data.Process.ScheduleProcessor.TryProcessSchedule(...)There is no inner exception showing the actual cause. Acumatica continued retrying the overdue schedule. Later, the website restarted automatically, and the schedule ran successfully after the restart without any configuration changes.Has anyone encountered this behavior?Specifically:Where can we find the underlying exception when System Monitor only shows this wrapper? Are additional server-side scheduler or application logs available? Could stale screen/customization cache cause initialization to fail until the web
I recently encountered an issue with Acumatica 25R2 SP1 where publishing any customization project caused the Graph Type field in the Site Map to become blank for all custom Modern UI screens.The issue affected multiple development instances but did not occur in our production, sandbox, or other development environments.Root CauseAfter extensive troubleshooting, I traced the behavior to the following setting in Web.config:<add key="NodeJs:CompileAllScreens" value="true" />When enabled, this setting causes Acumatica to use the root nodejs.config during compilation. That configuration does not include the plugin used to process custom Modern UI screen metadata.As a result, JavaScript compilation and customization publishing complete successfully, but the metadata needed to resolve Graph Types for custom Modern UI screens is not generated correctly.ResolutionRemoving the NodeJs:CompileAllScreens setting from Web.config resolved the issue in my environment.Neither of our fresh 25R2 i
Hi All, this question relates to our customisation and business events, so not sure if it already covered in general topic, but it is then happy for one of you to direct me there.Now in our setup of 2023R1 (I know its old and we are planning to upgrade) we have added a custom field to the customer screen. Based on the value of this custom field couple of business event gets fired up in the back ground that updates the Payment methods on the customer with certain logic. Our problem is related to ARDD payment method where in-consistently on a small number of customers these ARDD payment methods are not linking to the customer even when the business even has run and finished.I have been going back and forth with MYOB Support for months and now the final gist that we are being told is that we should not use business events but instead get MYOB Support to customise the same via code which is more reliable. Is this true? For something that has been working flawlessly for 3 years, now is
Hello,Can anyone use AcuMate to validate Modern UI files?I’m trying to use AcuMate with Modern UI files and wanted to check whether anyone in the community has successfully used it for validate html and ts files.I have AcuMate extension installed and enabled in VS Code Acumatica version 26R2My current configuration is:acuMate.backendUrl: http://localhost acuMate.login: admin acuMate.password: 123 acuMate.tenant: empty(if single tenant) acuMate.useCache: true acuMate.useBackend: true acuMate.usePrettier: true acuMate.clearUsages: trueHas anyone successfully used AcuMate to validate Modern UI files? If so, could you share your configuration or any additional steps required?Thank youSrinivas Kota.
Does anyone have ideas about what might be causing this?When I publish my customizations that I’m working on, in my local instance, the process doesn’t complete. There are no errors whatsoever. It just gets part of the way through the publish process and stops with seemingly no rhyme or reason. Then I have to unpublish all customizations and publish them one by one for it to work. This has been happening for some time now, and getting more frequent.Thankfully the issue is not present in the production instance, but it’s still annoying and concerning.I have a very fast machine and even if I leave it overnight it doesn’t complete, so it’s not just a slow publish.
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.