Acumatica Construction Vendor Portal in 2026 R2: Document Center, Security, and Rollout

An Acumatica Construction Vendor Portal rollout in 2026 R2 should begin with a controlled document-compliance workflow, not with a broad invitation for every vendor to log in. The practical model is straightforward: a construction team defines the requirements that apply to a vendor, purchase order, or subcontract; an authorized vendor user sees only the applicable work and documents; the vendor submits information through Document Center; and a compliance owner verifies the result before it affects the operational process. In Acumatica 2026 R2, the Vendor Portal and Construction features work together to surface vendor requirements, project-related subcontracts and purchase orders, document status, and expiring-document prompts. [1]
That workflow can reduce email chasing and make missing or expiring compliance items visible earlier, but it does not replace ownership of requirements, role design, verification, or exception handling. This guide explains what the 2026 R2 capability covers, how to prepare the data and security model, how to configure and test a pilot, and how to expand safely. It is written for construction operations leaders, compliance and document-control teams, project managers, finance leaders, and Acumatica administrators who need a defensible rollout plan rather than a feature tour.
What the construction vendor portal solves
Construction teams often know the problem before they name it: a subcontractor is ready to begin work, but a certificate, lien waiver, safety document, payment-related record, or profile update is buried in an inbox. A project manager follows up with the vendor, a compliance coordinator tries to determine whether the document applies to one subcontract or every active agreement, and accounting may discover the gap after the operational deadline has become urgent. A portal is useful only when it connects that document to the correct requirement and makes the next responsible person clear.
Acumatica describes the 2026 R2 construction capability as self-service access for vendors and subcontractors to subcontracts, purchase orders, and compliance documents through its Construction Exchange portal experience. [2] The Vendor Portal home page is not merely a file repository. For an authorized user, it can show the relevant subcontracts and purchase orders, their statuses, unbilled amount where applicable, document progress, warnings for documents that are missing, rejected, or expired, and notifications for documents nearing expiration. [3]
The operational goal is therefore not “put all vendor paperwork online.” It is to create a closed loop: the internal team determines a requirement, the vendor sees a bounded request, the vendor can supply an appropriate document, the internal team verifies it, and both sides can see the resulting status. The loop should make ownership and timing more explicit than they were in email, spreadsheets, or shared drives.
This distinction matters for leadership. A portal may improve coordination, but it cannot decide whether an insurance limit is sufficient, whether a waiver is valid for a particular payment, or whether a vendor should be permitted to proceed. Those remain governed business decisions. The portal provides a usable place to present requirements, collect evidence, and route it to the people who own those decisions.
What Acumatica 2026 R2 includes and what to validate
Acumatica announced general availability of 2026 R2 on October 1, 2026. Its release material identifies Construction Exchange applications as part of the construction enhancements and describes the construction offering as vendor and subcontractor self-service access to subcontracts, purchase orders, and compliance documents. [4] The detailed form-reference documentation is more useful for implementation planning because it specifies the forms, prerequisites, roles, and document behaviors in the released version.
Document Center, form VP401000, is for an authorized Vendor Portal user. It is available when the Vendor Portal feature is enabled and the Document Center form is enabled in the portal configuration. In that workspace, vendors can review requirements created by an internal compliance manager, create a compliance document, complete its attributes, attach files, and submit it for verification. [1] The documented requirement levels are company, subcontract, and purchase order. That is a meaningful design choice: a company-level item can be reused for the company profile and related current agreements after verification, while a subcontract- or purchase-order-level requirement is handled separately for that record.
Before treating that description as a deployment specification, validate the exact edition, licensing, build, enabled features, role behavior, and configuration in the target tenant. Product documentation describes the supported behavior; it does not automatically prove that a particular tenant has every prerequisite enabled or that local customization has not affected access. An implementation team should also confirm whether the organization calls the experience Vendor Portal, Construction Exchange, or another local name so training, sign-in instructions, and support materials match the actual environment.
It is equally important to state what the portal is not. It is not an unrestricted external window into Acumatica. The Portals configuration documentation says that categories and forms can be hidden, and that a form cleared from the configuration cannot be opened even with a direct URL. It also warns that forms placed in the Other category can expose ERP data, so filters, visible elements, and row-level security must be reviewed. [5] Treat the portal as a deliberately limited application for an external audience, not as a shortcut around normal access design.
Readiness work before enabling a portal
The fastest way to delay a rollout is to make the portal the first place where the organization discovers that vendor data, requirements, approvals, and project ownership are inconsistent. Do the internal readiness work first. A small pilot has less value if it is built on unreliable vendor records or if an internal team cannot answer who approves a document, when a record becomes actionable, and how a rejected document is resolved.
Confirm the feature and deployment prerequisites
For the construction-facing Vendor Portal Home, Acumatica states that both the Vendor Portal and Construction features must be enabled, and the Home form must be selected in the Portals configuration. The Document Center similarly depends on the Vendor Portal feature and its corresponding check box on the portal’s General tab. [3] Capture each prerequisite in a sandbox checklist. Include the portal URL, its Online state, the intended portal type, the user type, the access role, forms exposed, relevant features, and the ownership of each setting.
Do not enable the portal in production simply to see what it looks like. An administrator can control whether a portal is online, and the portal URL is part of the published configuration. [5] Build and test the configuration in a non-production environment where invitations, sample vendors, documents, role changes, and error conditions cannot affect active projects.
Clean the vendor and project relationships
Make a pilot data pack for a few real but carefully selected vendors. For each one, identify the legal business account, key contacts, open or planned subcontracts and purchase orders, accessible projects, expected document categories, and current compliance state. Resolve duplicate vendor records and unclear contact ownership before granting portal access. A portal user who is associated with the wrong business account or project creates a security and support problem that configuration alone may not reveal.
Also decide which records are in scope. A phased launch may begin with new subcontracts in one business unit, one geography, or one project type. This is usually easier to govern than attempting to migrate every historical requirement and legacy attachment. The objective is not to prove that every old document can be displayed. It is to establish a repeatable, verified process for the documents that control current work.
Write the operating policy before the screen instructions
Every rollout needs a plain-language rule set. Define document types and categories, which requirements are mandatory, who may create or alter a requirement, acceptable file formats, what evidence is needed to verify a document, the review target, the escalation interval, the expiration policy, and the records retained when a vendor relationship ends. If policy is vague, users will use free-text descriptions and email as the real workflow while the portal becomes a second, incomplete record.
The policy should also distinguish a document submission from approval. A vendor may have successfully attached a certificate, but the document is not necessarily verified. Internal reviewers need a simple explanation of what each status means and which operational action is permitted at that status. This is the foundation for later training and test cases.
Map the vendor-document workflow before configuration
Start with the workflow a vendor and an internal compliance owner will actually follow. Use one representative scenario, such as an electrical subcontractor that must provide an insurance certificate for a new subcontract. Identify the trigger that creates the requirement, the exact information presented to the vendor, the document attributes the vendor must supply, the internal verification standard, the status after verification, the action if the document expires, and who communicates a rejection. Only then translate the process into setup.
Choose the correct requirement level
Document Center differentiates company-level, subcontract-level, and purchase-order-level requirements. A company-level requirement is appropriate when one verified document can satisfy the requirement for the company profile and related current subcontracts and purchase orders. A requirement tied to a specific subcontract or purchase order should be used when the evidence is unique to that agreement. [1]
That decision has operational consequences. Assigning everything at the company level may falsely imply broad applicability. Assigning everything per subcontract can create needless duplicate uploads and review workload. Build a short decision rule around the legal or operational reason for the document: is it a vendor credential that applies across active work, an agreement-specific requirement, or a purchase-specific requirement? The compliance owner should be able to explain the rule without referring to software fields.
Make the handoff from requirement to verification explicit
In Document Center, an authorized portal user can select a previously uploaded document or create and link a document to a requirement. The documented dialog includes description, document type, category, effective date, expiration date, limit, and file upload. [1] Configure required data around the internal verification rule. If the verifier needs a policy limit or expiration date to make a decision, that data should be consistently captured and reviewed, not inferred from arbitrary attachment names.
Then define an internal service level. For example, a compliance coordinator might review new submissions within one business day, request clarification when an attachment is unreadable, and route exceptions to a designated project or risk owner. The timing is the organization’s policy, not a claim about the product. What matters is that vendors understand when a submission is pending review and internal teams can prioritize the work.
Decide what happens after a rejection or expiration
A good portal workflow includes the unhappy path. The Vendor Portal Home documentation identifies warnings for requirements in Not Provided, Rejected, or Expired status and notices for documents that expire within 30 days. [3] Define what those signals mean internally. A rejected document may need an explanatory message, a new upload, and a follow-up date. An expiring document may require a reminder sequence and an escalation before access to a work process is affected.
Do not leave a rejection as a dead-end status. Use a reason category and plain-language note that tell the vendor what is missing or unacceptable. If the organization has a policy that affects subcontract execution, payment, or site access, have the responsible legal, finance, and operations owners approve the rule before automation or enforcement is introduced.
Define roles and separation of duties
External portal access should match a real job responsibility, not simply an email address. Acumatica’s Portals form identifies Vendor Portal User as the predefined access role for signing in to a Vendor Portal. Portal user roles are assigned on the Contacts form for a Portal External User, and the roles define access to company data and portal functionality. [5]
Build a role map before creating invitations. A typical vendor organization may need one user who can submit documents, one manager who can maintain company profile or contacts, and perhaps an employee who can review financial activity if that is part of the approved scope. Internally, separate the ability to define requirements, verify documents, modify portal configuration, approve financial consequences, and administer user access. The exact titles will vary, but the separation prevents one person from silently changing the request, evidence, and approval outcome.
Use least privilege as an operating rule
Give the vendor only the forms and actions needed for the defined workflow. The Portals form allows the administrator to select categories and forms on the General tab. Clearing a form hides it from navigation and prevents it from opening by direct URL. [5] Start with Home, Document Center, and Subcontracts and Purchase Orders only if those are necessary for the pilot. Add other forms only after a test proves the data and role experience are appropriate.
Least privilege is not only a technical principle. It reduces training burden and support noise. A vendor user who sees only clear tasks is more likely to submit the correct document than a user who sees unfamiliar finance or administration features. Conversely, adding broad categories for convenience can create an avoidable exposure of data or controls.
Establish user lifecycle controls
Assign ownership for every external account. The team should know who approves a new user, who verifies the relationship to the vendor, who updates or disables access when an employee changes roles, and how often the active-user list is reviewed. The portal’s user list displays user status, including Active, Online, Disabled, and Temporarily Locked. [5] Make the review cadence part of the operating model rather than an emergency task after a personnel change.
For a production rollout, record the request, approver, assigned role, business account, projects or agreements in scope, activation date, and removal date. This provides a practical audit trail even where a formal identity-governance system is not available.
Set project, vendor, and document access boundaries
Security design must be tested with the question: “What can this person see if they are a real vendor employee with this exact account and role?” Screen-level access alone is not enough. The Vendor Portal Home shows only subcontracts and purchase orders for projects the portal user can access, along with documents related to the non-project code. [3] That expected scope should be tested in every pilot persona.
Build an access matrix with a vendor company on one axis and the projects, subcontracts, purchase orders, company-level requirements, and users on the other. For each combination, define view, submit, edit, and administrative capabilities. Do not rely on role names alone; verify actual records. Include scenarios where a vendor works on multiple projects, a contact changes employers, a subcontract closes, and a user has no approved project access.
Do not assume the same document belongs in every context. A vendor’s corporate insurance certificate may be useful at the company level, while a requirement associated with a particular subcontract may include terms or documents that should not be visible in a different project. The earlier decision about requirement level should align with the tested data scope. If it does not, correct the workflow design before inviting additional vendors.
For any additional form exposed through the portal, follow Acumatica’s explicit warning: review filters, visible UI elements, and row-level security before permitting external access. [5] This review should involve a functional owner who understands the construction process and an administrator who can test the actual role. A configuration that looks reasonable from an internal administrator account can be wrong for a portal user.
Configure Document Center around real requirements
Document Center should feel like a focused action list to a vendor, not a generic document library. The portal form shows requirements created by a compliance manager in Acumatica ERP and provides ways to create, edit, select, or unlink a related compliance document where those actions are available. [1] The configuration work is therefore mostly about the requirements and the business data that make them meaningful.
Use clear requirement names and categories
A vendor should be able to understand what is needed without calling support. Use a requirement description that identifies the document, the applicable entity, any relevant time period or limit, and the intended outcome. Avoid labels such as “insurance 2” or “project documents.” If a compliance reviewer needs more detail, provide that detail in the approved process instructions rather than creating a cryptic internal abbreviation in the portal.
Document types and categories need governance as well. If several internal teams create near-duplicate categories, reporting and review become inconsistent. Create a small controlled vocabulary for the pilot, publish it to the reviewers, and use it consistently in examples and training. Expand only when a real business case demands it.
Choose document attributes that support verification
The documented compliance-document dialog includes effective date, expiration date, limit, type, category, description, and uploaded files. [1] A disciplined design makes those attributes useful. If a certificate must cover a period, reviewers should know where to check effective and expiration dates. If a policy limit matters, define how the limit is recorded and compared. If an attachment must include a particular endorsement, make that reviewer criterion clear.
Do not ask vendors for fields that no internal reviewer will use. Extra fields slow adoption and encourage placeholder values. Conversely, do not omit a key field simply because it seems easier to capture it in an email. Every required item should have a named decision purpose.
Enable only the needed navigation
On the Portals form, the Vendor Portal category contains the functionality supporting vendor compliance and document management. The documentation describes vendors viewing document requirements, tracking missing documents, and uploading or editing documents. [5] Start with the smallest navigation set that permits the pilot journey: sign in, review work, submit or update documents, and resolve exceptions. A limited surface makes it easier to diagnose usability issues and prove that access is properly bounded.
Design statuses and exception handling
Status design turns a portal from a storage location into an operational control. The Vendor Document Requirement Analysis inquiry documents requirement states that include Not Provided, Pending Verification, Verified, Rejected, Expired, Not Required, and Excluded. It also identifies whether a requirement applies to a vendor or to a purchase order or subcontract. [6] Use those states as a shared vocabulary, then document the organization’s permitted actions for each one.
For example, Not Provided might mean the vendor has an open action; Pending Verification might mean the vendor has done its part but no work should be assumed complete until internal review; Verified might mean the requirement is satisfied for the approved scope; Rejected might require an explanation and resubmission; and Expired might create a time-sensitive follow-up. Whether these states affect subcontract processing, payment review, site access, or only a report must be decided by the organization’s responsible owners. Do not infer a business consequence just because a status exists.
Create an exception queue and assign ownership. One queue might be for missing documents, one for documents awaiting internal verification beyond a service target, and one for items near expiration. Each item should have an accountable owner, next action, due date, and escalation path. The queue can be reviewed in a short recurring meeting during the rollout until volume and roles stabilize.
Mass updates should be governed particularly carefully. Acumatica’s Update Vendor Requirements form can update requirements for selected vendors or for all listed vendors other than inactive vendors. [7] Use a documented approval and sample review for bulk changes. A broad update may create new work for many vendors, so a small configuration change can become a significant operational event.
Use the portal home page for useful action signals
The portal home page should orient a vendor to the work that needs attention, not merely replicate an internal dashboard. Acumatica documents tiles for pending and active subcontracts or purchase orders, unbilled amount where applicable, and the percentage of required documents that have been provided and are pending verification or verified. The Documents Provided measure excludes items that are not required. [3]
Use the pilot to decide whether those signals are understandable. A vendor should know why a document is marked incomplete, what is due next, and how to reach the relevant requirement. The Home documentation describes a Document Center warning for requirements that are Not Provided, Rejected, or Expired, plus an expiration notice when a submitted document will expire within 30 days. [3] Train vendors with a brief screenshot-based guide focused on these signals.
For internal teams, use the same concepts to manage the work backlog. A requirement that has been submitted but remains Pending Verification is not a vendor delay; it is an internal-review workload. Separating these queues prevents the common mistake of repeatedly reminding a vendor who has already completed the requested submission.
Secure the portal without blocking legitimate work
Security must preserve the vendor’s ability to complete a legitimate task while preventing accidental or inappropriate exposure. Start with the external identity, the portal role, the associated business account, and the project scope. Then test every exposed page under each role. The correct result is not “the page loads.” The correct result is that each persona can see and do exactly what the documented workflow requires, and nothing more.
Review the portal configuration as a publication surface
The Portals form gives the administrator control over the portal URL, online status, portal type, access role, exposed forms, settings, branding, and portal users. [5] Treat changes to these controls as production changes. Record who requested the change, why it is needed, which vendor roles are affected, test evidence, reviewer approval, and a rollback step. This protects the organization from well-intentioned but broad changes such as exposing an extra category to solve a single support request.
Keep portal configuration and compliance verification separate where practical. The person who can make a portal broadly available should not be the only person deciding that a submitted document is acceptable. The person who manages vendor accounts should not quietly alter the approval standard. Separation of duties does not have to mean a large team; it means the critical decisions are visible and reviewable.
Use contact and role changes as control points
The portal documentation says that portal contacts are configured on the Contacts form, and the Portal Users tab shows the associated business account, assigned roles, and status. [5] A request to add a new user or grant a stronger role should trigger an identity and relationship check. For high-risk changes, have a vendor manager or authorized company representative validate the request through a known channel rather than relying only on an unfamiliar email.
Review active vendor users on a schedule and after known events such as contract completion, project closeout, personnel turnover, merger, or vendor deactivation. The review should reconcile portal users against the current vendor contact list and the work that remains in scope. Disable or remove access promptly when there is no continuing business need, according to the organization’s retention and offboarding policy.
Protect financial and payment-related capabilities
Financial configuration deserves an additional review. On the Vendor Portal tab, Acumatica documents settings for source financial documents, default branch, payment methods, a security contact, notification on Vendor Portal Financial Manager role assignment, and notification on payment-instruction changes. [5] If financial functionality is not necessary for the initial compliance pilot, leave it outside the pilot scope. When it is introduced, assign finance ownership, test change notifications, and establish a separate approval path for payment-related information.
Never treat portal credentials, document attachments, or a vendor-provided payment instruction as sufficient evidence for a sensitive financial change. Follow the organization’s approved verification process, which may require an independent confirmation channel and dual review. The portal can provide workflow context; it does not eliminate fraud-control obligations.
Test security with negative cases
Positive tests show that a valid vendor can submit a document. Negative tests prove the boundary. Include an external user with no project access, a user from a different vendor, a vendor with multiple projects, a disabled user, a contact whose role was reduced, and a user attempting to open a hidden page by a copied URL. Test an expired document, a rejected submission, and a user who tries to attach a file to an inapplicable requirement. Record both expected and actual outcomes.
Also test the internal side. A compliance reviewer should see enough information to verify an item, but an internal project role should not automatically acquire portal administration privileges. An administrator should not be able to mask a workflow failure by changing a requirement without the required business approval. These tests often find process gaps before a technical configuration problem.
Use a phased construction portal rollout
A staged rollout is safer than a one-time invitation to every vendor. It gives the team a chance to prove workflow ownership, data boundaries, training materials, and support capacity on a manageable population. The first phase should be intentionally narrow and useful enough to expose real conditions: a small number of vendors, one class of requirement, a limited project group, and a named internal review team.
Phase 0: define the outcome and pilot boundary
Write a one-page pilot charter. State the business outcome, for example, “collect and verify current insurance certificates for new electrical subcontracts on three projects.” Define the vendors, projects, document types, roles, dates, internal reviewers, support path, measures, and explicit exclusions. Include the answer to an important question: what will not change if the pilot has a problem? A pilot should not unintentionally disrupt payment, site access, or contract execution unless the responsible policy owners have approved that consequence.
Build a named escalation list. It should include the construction operations owner, compliance or document-control lead, Acumatica administrator, security contact, finance contact if financial features are in scope, and implementation partner or support contact. Decide who may pause new invitations, temporarily take a portal offline, correct a data issue, and communicate with affected vendors.
Phase 1: configure and validate in a sandbox
In a non-production environment, enable only the prerequisites needed for the proposed experience. Create representative vendor records, contacts, projects, subcontracts or purchase orders, requirements, and test documents. Configure the portal forms deliberately. The product documentation notes that an online setting controls portal availability and a cleared form cannot be opened by direct URL. [5] Use that behavior to prove the intended surface is limited.
Run a scripted workshop with the actual internal reviewers. Ask them to create a requirement, invite or activate a test persona, submit a document, verify it, reject an incomplete document, replace it, and inspect the final result from both sides. Do not settle for a configuration review performed only by administrators. People who will verify documents and work with project teams must confirm that the requirements and statuses match their real decisions.
Phase 2: invite the pilot vendors
Send a concise invitation that explains why the portal is being used, what the vendor needs to do, who may use it, the first deadline, the support channel, and what to do if a document cannot be supplied. Give the vendor a one-page guide or short video that shows sign-in, the home page, Document Center, submission, status meanings, and resubmission after rejection. Avoid sending a long ERP manual; external users need task-specific instructions.
Provide white-glove support during the first submissions. Watch for sign-in trouble, misunderstood requirement language, missing required attributes, attachment issues, and uncertainty about the distinction between Submitted or Pending Verification and Verified. Record each support question as evidence. If the same question appears more than once, improve the requirement text, training guide, or configuration instead of simply answering it repeatedly.
Phase 3: assess control and experience
At the end of the pilot, review more than completion percentage. Examine whether the correct vendor users saw the correct projects, whether reviewers could consistently determine what to approve, whether rejected documents were resubmitted successfully, whether expiry notices created timely action, and whether any excluded records became visible. Compare actual turnaround times with the published internal service target. Identify which process step caused delay: vendor response, incomplete submission, internal verification, requirement ambiguity, or a technical issue.
Hold a go/no-go review with the named owners. The decision should be evidence-based. Expand when the security tests pass, workflow ownership is functioning, support volume is understood, and the internal team can absorb the review load. Pause or redesign when portal access is broader than intended, document standards are unclear, or a business consequence is being applied without an approved policy.
Phase 4: expand by workflow, not just by vendor count
Scale one stable workflow at a time. An organization might first add more vendors for the same certificate process, then add a different requirement class, then extend to a second operating unit or project type. Each expansion should repeat the data, role, and negative security tests. This approach creates reusable rollout assets and avoids multiplying an unclear process across hundreds of relationships.
For a broader Acumatica release program, connect the rollout to the organization’s documented 2026 R2 readiness and change-management plan. Biz-Tech’s Acumatica blog can serve as an internal-link destination for related implementation and release planning guidance, while the portal design remains grounded in the target tenant’s verified configuration.
Test the workflow as vendors will use it
Testing must cover process, security, data quality, and usability. A successful technical login does not prove a useful vendor experience. Build test cases with named personas and observable expected outcomes. Include screenshots or exported evidence where this is appropriate for the project’s change-control process.
Core functional tests
- An authorized vendor user signs in and sees the expected home page.
- The user sees only the intended company profile, projects, subcontracts, purchase orders, and requirements.
- The user opens Document Center and can identify a company-, subcontract-, and purchase-order-level requirement where each is in scope.
- The user creates or selects a compliance document, supplies required attributes, attaches an allowed file, and submits it.
- An internal reviewer can locate the submission, verify it or reject it with a usable explanation, and the vendor sees the appropriate next state.
- A verified company-level document is evaluated in the expected related current scope; a document tied to a specific agreement does not appear as a universal credential.
Security and access tests
- A vendor user from another company cannot view the pilot vendor’s requirements or documents.
- A vendor contact without project access does not see the project’s related records.
- A user cannot reach a hidden portal form by pasting a copied direct URL.
- A disabled or removed portal user cannot resume work after an access review.
- A financial role change generates the expected notification if those controls are in scope.
- An internal user with compliance duties does not accidentally receive portal-administration permissions.
Exception and lifecycle tests
- A requirement with no document appears as an action item rather than disappearing from the vendor’s view.
- A rejected document can be corrected and resubmitted with a clear explanation.
- A document nearing expiration produces the documented notification path and an owner handles it.
- An expired document is visible to the responsible people and follows the approved escalation process.
- A bulk requirements update is first tested on a small selection, reviewed, and then handled according to the organization’s approval policy.
Acumatica’s Vendor Document Requirement Analysis inquiry is helpful for internal test evidence because it can show the requirement, vendor, related purchase order or subcontract, document status, and linked compliance document. [6] Use it to reconcile the expected outcome of a test, not as a substitute for experiencing the portal as the external user.
Measure adoption and control outcomes
A portal rollout needs measures that expose both adoption and control quality. Avoid a single metric such as the number of accounts created. A large number of accounts can coexist with low document quality, long review queues, or poor security hygiene. Select a small set of metrics that helps the owners improve the workflow.
Useful measures may include the percentage of pilot vendors who activated access, the percentage of required documents submitted by the due date, median time from submission to verification, percentage of submissions rejected and the top rejection reasons, number of items expiring within the defined window, number of users disabled after offboarding, and the volume of support contacts by issue type. These are suggested operational measures, not product-provided benchmarks. Set targets from the organization’s capacity and risk tolerance rather than copying an arbitrary industry number.
Pair metrics with qualitative review. Ask a small sample of vendor users whether they understood the request, could find the document action, and knew what would happen after submission. Ask internal reviewers whether a requirement contains enough context to make a consistent decision. A low completion rate may be a vendor-adoption problem, a weak requirement description, an internal review bottleneck, or an access design failure. The response should follow the evidence.
Avoid common vendor portal failure modes
Launching before the policy is ready
A portal cannot repair an undefined compliance policy. If document types, verification rules, owners, and consequences are not settled, the implementation team will encode guesses into fields and exception notes. Pause and obtain policy decisions before broadening access. A transparent process is more valuable than an impressive-looking portal with inconsistent outcomes.
Granting broad access to solve one support issue
When a vendor cannot find something, the tempting response is to add a category or a new role. That may solve the immediate complaint while exposing unrelated data. Use the documented portal-form controls and security review to identify the real need. [5] Modify access only after a test with the intended persona confirms the narrowest valid remedy.
Treating every document as a company-level item
Company-level reuse is efficient only when the evidence actually applies across the intended records. Use subcontract- and purchase-order-level requirements when the document belongs to a particular agreement. The product’s documented distinction exists to support appropriate scope. [1] A poor scope choice may create false confidence or needless resubmission work.
Confusing submitted with verified
Vendors can supply data and attachments, but internal verification still matters. Use Pending Verification distinctly from Verified in training, dashboards, and internal reports. If internal review queues are neglected, a portal may make vendor activity visible without actually improving compliance control.
Using missing-document notices as the entire process
Warnings and expiration notifications are useful signals, not a complete operating model. The home page documentation identifies how such items are surfaced. [3] The organization still needs named reviewers, service levels, escalation, and a resolution path for disputes, special conditions, and unavailable documents.
Skipping the vendor experience test
Internal users know the ERP vocabulary and may unconsciously compensate for unclear labels. A vendor does not. Test each change with a realistic external persona and an actual task. The best feedback is not “looks good”; it is whether the user can understand the requirement, attach the right document, see the resulting status, and find help without guessing.
Keep a sustainable ownership model
After the pilot, formalize ownership. Assign a business owner for the compliance policy, an operational owner for review queues and vendor communication, a portal administrator for technical configuration and account lifecycle, a security owner for access reviews and sensitive changes, and a finance owner for any payment-related functionality. One person may fill more than one role in a smaller organization, but the decisions should remain distinct and documented.
Create a change procedure for new document categories, revised requirements, new roles, additional portal forms, and bulk updates. Require a business rationale, impact review, test evidence, approval, implementation date, and rollback approach. This prevents the portal from drifting into an unmanaged collection of exceptions. It also gives new team members a reliable understanding of why a workflow exists.
Set a periodic review schedule. Review active users, projects in scope, open requirements, documents near expiry, rejection reasons, support trends, and exceptions. Revalidate the design after an Acumatica update, a major construction process change, or a significant expansion in vendor population. For related platform configuration and integration guidance, link readers to the Biz-Tech Services Acumatica services page and the Biz-Tech Lessons library rather than creating isolated portal procedures that do not connect to the broader ERP operating model.
Next practical step
Choose one vendor-document workflow that matters to an active construction project, then map it from internal requirement creation through vendor submission, verification, rejection or expiration, and final status. Identify the roles, project scope, data attributes, service-level owner, and security boundary for that one journey. Test it in a sandbox with a real reviewer and a representative vendor persona before inviting anyone to production.
That exercise produces the evidence needed to decide whether the portal is ready to expand. It also surfaces the work that must be owned outside the software: document policy, reviewer capacity, user lifecycle, and escalation. Biz-Tech Services can help construction teams translate those requirements into a controlled Acumatica configuration, test the user journeys, and plan a staged rollout that fits their project and compliance processes.
Frequently Asked Questions
What is the Acumatica Construction Vendor Portal in 2026 R2?
It is an external portal capability for authorized vendors in a construction context. Acumatica documents Vendor Portal access to project-related subcontracts and purchase orders, vendor requirements, and Document Center workflows for compliance documents when the necessary features and forms are enabled. [3]
Can vendors upload documents through Acumatica Document Center?
Yes. The Document Center documentation says authorized Vendor Portal users can review requirements, create a compliance document, enter required attributes, attach files, and submit the document for verification. The available actions and expected data should be confirmed in the target tenant and configured workflow. [1]
What are company-level, subcontract-level, and purchase-order-level requirements?
They are documented scopes for portal requirements. A company-level requirement can be satisfied for the company profile and related current agreements after verification, while subcontract- and purchase-order-level requirements apply separately to the relevant agreement. Use the level that reflects the actual business and compliance scope. [1]
Which Acumatica features are required for the Vendor Portal home page?
Acumatica’s 2026 R2 form reference says the Vendor Portal and Construction features must both be enabled, and the Home form must be selected on the Portals configuration. The target environment’s edition, build, licensing, and configuration should still be verified before rollout. [3]
How does a vendor get portal access?
An external contact is configured as a Portal External User and assigned an appropriate portal role on the Contacts form. The Portals documentation identifies Vendor Portal User as the predefined role that allows sign-in to the Vendor Portal. Account ownership, user role, and project scope should be validated before access is activated. [5]
Can a vendor see all projects and documents?
No. The intended design should restrict a user to authorized scope. Acumatica documents that the portal home page shows subcontracts and purchase orders for projects the portal user can access, along with documents tied to the non-project code. Test actual vendor personas and project relationships in the target tenant. [3]
What happens when a document is rejected or expires?
The system documents requirement statuses including Rejected and Expired, and the home page can surface warnings for Not Provided, Rejected, or Expired items. The organization must define the review owner, vendor communication, resubmission process, escalation, and any operational consequence. [6]
How can an organization prepare for documents that will expire soon?
Acumatica’s Vendor Portal Home documentation describes a Document Center notification for a provided document that will expire within 30 days. Use that signal as part of a documented renewal process with an accountable owner and escalation path; do not rely on an alert without assigning follow-up responsibility. [3]
Should a company launch the portal to all vendors at once?
Usually, a phased rollout is safer. Begin with a defined workflow, limited vendor group, named internal reviewers, test plan, support path, and measures. Expand only after access boundaries, document-review standards, and exception handling have passed real pilot evidence. The appropriate rollout scope depends on the organization’s risk, data quality, and review capacity.
Does a portal eliminate the need for internal compliance review?
No. The portal can present requirements and collect documents, but it does not replace the business decision that a document is acceptable. Maintain internal verification standards, reviewer ownership, exception handling, and evidence of the final decision.
Sources
- Acumatica 2026 R2 Form Reference Guide: Document Center
- Acumatica: Construction Management Software and 2026 R2 construction enhancements
- Acumatica 2026 R2 Form Reference Guide: Vendor Portal Home
- Acumatica press release: 2026 R2 general availability
- Acumatica 2026 R2 Form Reference Guide: Portals
- Acumatica 2026 R2 Form Reference Guide: Vendor Document Requirement Analysis
- Acumatica 2026 R2 Form Reference Guide: Update Vendor Requirements
- Acumatica 2026 R2 Form Reference Guide: Subcontracts and Purchase Orders
- Acumatica blog: One Connected Project in 2026 R2
How to Map CommerceHub Items to Acumatica Inventory IDs
Mapping CommerceHub items to Acumatica Inventory IDs is performed on the Cross-reference tab of the CommerceHub Mappings screen. The documented purpose of that tab is to associate an Acumatica item with the Item ID contained in the inbound file during order import.
The Biz-Tech Services CommerceHub Acumatica Connector uses a file-based Secure File Transfer Protocol, or SFTP, flow rather than direct application programming interface requests.
What CommerceHub Item Mapping Does
The Biz-Tech Services Acumatica CommerceHub Connector uses the Cross-reference tab to map Acumatica items to the Item IDs contained in CommerceHub files during order import. The source identifies the two sides of the relationship at a high level: the Acumatica item and the external file Item ID.
The Mappings screen controls connector behavior for import, export, and synchronization. Store Codes provide distinct configurations for specific processes, with parameters such as Transaction Type, Description, Default Customer, and Document type. Item mapping should therefore be reviewed in the store and process context used for the inbound order file.
The source does not name the individual Cross-reference grid fields, a match button, or a save sequence. It also does not say whether the Acumatica side displays Inventory ID, Inventory CD, a description, or another item field. Use only the controls visible in the installed Mappings screen.
CommerceHub Item Mapping at a Glance
Use this sequence to configure and test the documented file Item ID relationship.
1. Open the CommerceHub workspace that appears after the connector customization is published.
2. Open Mappings and select the Store Code used for the relevant order-import process.
3 Confirm the store parameters, including Transaction Type, Description, Default Customer, and Document type, before changing item cross-references.
4. Open Cross-reference and associate each inbound file Item ID with the intended Acumatica inventory item.
5. Retrieve a purchase order with Import Purchase Orders for the same Store Code.
6. Process one selected order and confirm the resulting item lines on Sales Orders before using Process All.
7. Review Error Log, CommerceHub Errors, and Import Failed Purchase Orders when an item or order does not process as expected.
8. Keep Inventory Template selection separate from inbound Cross-reference mapping because it controls which items appear for inventory quantity export.
Select the Store and Process Context
CommerceHub data moves through text files over SFTP. The manual describes a path through FileZilla between CommerceHub and Acumatica in both directions. Because the transfer is file-based, the Item ID in the file is the documented external side of the item cross-reference.
Store Codes allow individual configuration for different import and export operations. The source names Inventory, Item, and Shipment as examples of processes that can have distinct parameters. Before reviewing an item mapping, confirm that the selected Store Code belongs to the inbound order process under test.
The documentation does not explain whether a Cross-reference row is shared among Store Codes or isolated by Store Code, Transaction Type, or process. It does not define what happens when the same file Item ID exists in more than one configuration. Treat each configured process as separate until its behavior is confirmed in the installed connector.
Map the File Item ID to an Inventory Item
The Cross-reference tab maps Acumatica items to their respective Item IDs contained within the file during order import. This is the only documented product-to-item identity rule in the manual.
The source does not provide a sample value or screen-level field list. It does not say whether the external Item ID is an SKU, universal product code, vendor part number, retailer item number, or CommerceHub internal identifier. It also does not define the file name, record type, or column in which the Item ID appears.
The Biz-Tech Services CommerceHub Acumatica Integration should therefore be configured from the actual inbound file and the fields exposed by Cross-reference. Do not relabel the external value as an SKU or alias unless that meaning is confirmed by the CommerceHub file specification used by the implementation.
No bulk mapping import, spreadsheet loader, wildcard, automatic item creation, or default replacement item is documented. The manual also does not explain whether one file Item ID may map to multiple inventory items or whether duplicate rows are rejected.
Validate the Result on an Imported Sales Order
Import Purchase Orders retrieves CommerceHub purchase orders for a selected Store Code. Process imports selected records, while Process All imports every order shown. The imported document appears on Sales Orders.
A controlled validation should use one order first. Compare each source file Item ID with the corresponding item on the created sales order line. The manual does not name a dedicated mapping status, resolved-item field, or line-level diagnostic, so the resulting sales order is the documented business record available for comparison.
Customer handling is independent of item matching. Customers are not imported from CommerceHub; the connector assigns the Default Customer and overrides the address on the Sales Order Addresses tab with the actual address received from the order. A correct customer or address does not prove that item IDs were mapped correctly.
The source gives no formal item-mapping validation rule and no exact message for an unknown Item ID. It does not state whether one unmapped item blocks the full order, creates a partial order, or sends the record directly to Import Failed Purchase Orders.
Separate Inbound Mapping from Inventory Template
Cross-reference supports inbound order item resolution. Inventory Template supports outbound inventory quantity selection. When Inventory IDs are selected and saved on Inventory Template, the associated items appear on Export CommerceHub Inventory.
Warehouse Details also belongs to quantity export rather than inbound item identity. It selects warehouses and sets the Quantity basis to On Hand Quantity, Available Quantity, or Available for Shipment Quantity. These settings decide which quantity is exported; they do not map a file Item ID to an order-line item.
The source does not explain whether the Inventory IDs saved in Inventory Template must already have Cross-reference rows, whether an outbound inventory file uses the same CommerceHub Item ID, or how that external identifier is written to the export file. Do not assume that selecting an item for quantity export creates its inbound cross-reference.
Use Error Screens Without Inventing Failure Behavior
The Mappings screen includes Error Log. The documentation says errors encountered during order import and export are displayed there for review and resolution. Purge Logs deletes all error messages from the tab.
CommerceHub Errors is another screen that displays errors received from CommerceHub for various processes. Import Failed Purchase Orders allows orders that failed on Import Purchase Orders to be imported again after selecting a Store Code.
The manual does not connect a specific item-mapping error to one of those locations. It provides no error codes, message examples, failed-line fields, or correction workflow. Review all three places when a mapped item does not produce the expected sales order line, but do not claim that a particular screen always owns the error.
Purge Logs removes messages, so preserve the information needed for diagnosis before using it. The source does not state whether purging errors changes the failed order itself, its source file, or eligibility for Import Failed Purchase Orders.
Document Alias Item Class and Matching Gaps
No item alias mechanism is documented. The manual does not mention alternate IDs, customer part numbers, vendor part numbers, SKUs, barcodes, global trade item numbers, case normalization, wildcard values, or identifier precedence. It names only the Item ID contained within the file.
Item classes are also absent. There is no item-class default, class-based filter, inheritance rule, or instruction to restrict a CommerceHub Item ID to a class of inventory items.
Unmapped-record behavior is not defined. The source does not identify an automatic item-creation option, replacement item, queue, partial-import rule, or mapping suggestion. It also does not explain how a corrected cross-reference is applied to an order that already failed.
No CommerceHub screen ID is provided anywhere in the manual. The Mappings, Import Purchase Orders, Import Failed Purchase Orders, CommerceHub Errors, Export CommerceHub Inventory, and Sales Orders screens are named, but their IDs must not be inferred.
Where to Check Your Work
The Biz-Tech Services CommerceHub Acumatica Integrator exposes the documented mapping and result across these screens and tabs.
1 Mappings: confirm the Store Code and process parameters before reviewing item cross-references.
2 Cross-reference: compare the inbound file Item ID with the selected Acumatica item.
3 Import Purchase Orders: retrieve the order for the same Store Code and process one selected record.
4 Sales Orders: compare each imported line with the source Item ID and the intended Acumatica inventory item.
5 Error Log: review import or export messages before using Purge Logs.
6 Import Failed Purchase Orders: find and retry an order that failed during the initial import.
7 CommerceHub Errors: review errors received from CommerceHub for the affected process.
8 Inventory Template: confirm only the Inventory IDs intended for quantity export are selected and saved.
9 Export CommerceHub Inventory: verify that saved Inventory IDs appear, without treating that appearance as proof of the inbound Item ID cross-reference.
CommerceHub Item and Inventory ID Mapping Frequently Asked Questions
Where are CommerceHub Item IDs mapped to Acumatica items?
Use the Cross-reference tab on the CommerceHub Mappings screen. The manual says this tab maps Acumatica items to the respective Item IDs contained in the inbound file during order import.
Does the manual say that CommerceHub Item ID is an SKU?
No. It uses the term Item ID and does not define that value as an SKU, barcode, universal product code, vendor part number, or another identifier.
Can CommerceHub create a missing Acumatica inventory item?
The documentation does not describe automatic item creation or a replacement item. Create and approve the required inventory item and cross-reference before relying on order import.
Can item class control CommerceHub mapping?
No item-class behavior is documented. The source does not name item class as a filter, default, validation rule, or matching key.
Where should I look when an item does not map?
The Biz-Tech Services Acumatica CommerceHub Integration provides Error Log, CommerceHub Errors, and Import Failed Purchase Orders. The source does not state which one always contains an item-mapping failure, so review all relevant records for the selected Store Code.
Does Inventory Template create an inbound item cross-reference?
The manual does not say that it does. Inventory Template selects and saves Inventory IDs for Export CommerceHub Inventory, while Cross-reference handles Item IDs in inbound order files.
Can the same Item ID use aliases or several inventory records?
Aliases, duplicate handling, one-to-many mapping, and identifier precedence are not documented. Confirm any such requirement with Biz-Tech Services before configuring a production process.
How should I test a new CommerceHub item mapping?
Use the intended Store Code, create the Cross-reference row, retrieve one purchase order, process only that order, and compare its Sales Order lines with the source file before using Process All.
Work With the Biz-Tech Services CommerceHub Connector
A dependable CommerceHub item mapping starts with the exact Item ID in the inbound file, the correct Store Code, and a verified Cross-reference row. Keep inbound item resolution separate from Inventory Template and Warehouse Details, which control outbound quantity export.
If you need help validating CommerceHub file Item IDs, correcting failed order mappings, or documenting a controlled cross-reference process, visit https://biz-techservices.com to work with the Biz-Tech Services Acumatica CommerceHub Integrator.
Converting Acumatica Custom Screens to Modern UI: Extension vs New-Screen Decision Guide
Converting Acumatica Custom Screens to Modern UI Extension vs New Screen Decision Guide
A practical architecture and validation guide for Acumatica 2026 R2
Prepared for Biz-Tech Services | Last verified 26 October 2026 | Practitioner review required before publication
The safest way to convert an Acumatica custom screen to Modern UI is to decide first whether the screen is a customization of an Acumatica form or a screen your team owns end to end. Extend the supported Modern UI form when the business process still belongs to a stock Acumatica screen; build or convert a custom form when the screen, its navigation, and its user experience are genuinely yours. In both cases, treat generated TypeScript and HTML as a starting point, then validate the result in a development environment with real roles, workflows, and exception paths. [1] [2]
That distinction prevents two expensive mistakes: replacing a supported screen with a parallel copy that becomes difficult to maintain, or forcing a deeply owned application experience into a narrow extension that cannot express the workflow. The immediate reason to resolve the question is Acumatica 2026 R2: Modern UI is the default experience, while Classic UI-only forms remain a transition concern rather than a stable future design. This guide provides an architecture decision process, a conversion workflow, and an acceptance model for technical teams, application owners, and implementation leaders. [1] [6]
Table of Contents
- What the extension versus new screen decision really means
- Why this choice matters in the 2026 R2 transition
- Start with a screen ownership inventory
- When an extension is the maintainable choice
- When a new custom screen is the better boundary
- Use decision rules instead of a feature checklist
- Inspect the Classic UI source before you convert
- Use the converter as a baseline not as a production answer
- Build an extension around the original screen contract
- Design a new screen as a product surface
- Map TypeScript and HTML deliberately
- Keep business logic and UI migration separate
- Plan for security roles and data exposure
- Test work not just screens
- Publish through controlled environments
- Make the migration easy to support next year
- A practical conversion sequence
- Common conversion mistakes to avoid
- Establish a conversion backlog that reflects operational risk
- Handle actions dialogs and asynchronous work explicitly
- Treat data views and performance as design decisions
- Preserve auditability and financial controls
- Plan user adoption as part of the technical release
- Use source control and release discipline for UI files
- Set concrete exit criteria before the production decision
- Revisit the decision when the process changes
- How Biz Tech can help
- Frequently Asked Questions
- Sources
What the extension versus new screen decision really means
The decision is not a preference between two frontend technologies. Both paths use Modern UI concepts and both may involve TypeScript, HTML, a customization project, publishing, and verification. The architectural question is ownership. A customized stock screen begins with Acumatica's form, graph, security model, navigation, actions, and expected behavior. A fully custom screen begins with a business capability your organization or ISV owns, even when it works with Acumatica data. [2] [5]
Choose an extension when the primary user task is still a standard Acumatica task and the change is additive or localized. Examples include exposing a custom field, adding a tab, changing a small portion of layout, or adding an action that belongs in the context of an existing stock form. The Modern UI extension preserves the original form as the base and expresses the difference. That keeps future product behavior and the customization visibly separate. [2] [3]
Choose a new screen when the solution needs its own screen identity, workflow, and interaction model. The decision is stronger when the team owns the data-entry sequence, task-specific navigation, nonstandard work queue, visual layout, and lifecycle rather than merely one extra panel on a stock screen. A custom screen may consume standard data and still be fully owned from a UI perspective. The goal is not to maximize custom code; it is to align the implementation boundary with the business boundary. [4] [5]
Why this choice matters in the 2026 R2 transition
Acumatica's 2026 R2 guidance says Modern UI is the default experience. It also explains that Classic UI-only forms can remain accessible during the transition with a warning, while 2027 R1 is the stated next milestone for removing Classic UI-only forms. That makes a screen inventory a roadmap activity, not a cosmetic cleanup. A screen that users can still open today may nevertheless be an unsuitable dependency for the next upgrade cycle. [1]
The practical takeaway is not to rush every screen through a converter. Prioritize by operational consequence. Start with the screens that stop quoting, shipping, invoicing, receiving, production reporting, project billing, or financial control when they fail. Then identify who owns the underlying process, what integrations and reports touch it, and what evidence proves the Modern UI version works. A visible screen is rarely a standalone asset; it is usually one step in a larger workflow. [1] [7]
The transition also raises the cost of ambiguity. If a customization has no technical owner, source location, documentation, or test evidence, no one can confidently decide whether to extend, rebuild, retire, or replace it. Treat missing ownership as a discovery item before it becomes a production outage. A short inventory done early is less disruptive than trying to reconstruct a screen's purpose under an upgrade deadline. [7]
Start with a screen ownership inventory
Create a record for every custom or customized screen before design begins. Capture the screen ID, title, customization package, repository location, graph and DAC dependencies, fields and actions added, JavaScript or CSS assumptions, import or export scenarios, integrations, reports, security roles, business owner, technical owner, and last known test result. Include whether the screen is stock with additions, wholly custom, or uncertain. The uncertain category is useful because it prevents teams from guessing. [1] [7]
Then follow one representative transaction from entry to its downstream effect. For a custom order screen, the trace may include validation, approval, shipment, invoice creation, connector messages, and reporting. For an inquiry, it may include data joins, branch restrictions, filters, exports, dashboards, and a manager's decision. This trace reveals whether a seemingly simple UI change is actually coupled to controls, automation, or user expectations.
Do not judge ownership from the screen's appearance. A screen with a stock-style layout can still be fully custom because its business logic, views, and navigation are bespoke. Conversely, a heavily rearranged stock screen can remain a good extension candidate when the standard form still owns the job-to-be-done. Ownership follows responsibility for behavior and evolution, not the number of controls visible on the page.
When an extension is the maintainable choice
An extension is normally the right starting point when users need a stock form to behave mostly as Acumatica intended. The team may need a custom field, a focused tab, an adjusted section, a contextual dialog, a validation cue, or a purpose-built action. In that situation, the stock form remains the source of truth for lifecycle, standard commands, and navigation. The customization adds a deliberate difference rather than recreating the entire experience. [2] [5]
Acumatica's Modern UI documentation describes a customized form through TypeScript and HTML extension files. The TypeScript side mixes into the original screen class, while the HTML extension uses a top-level template and places customization tags at the same level. That pattern matters because it makes the relationship explicit: the extension depends on a known original rather than pretending to be an independent application. [2]
Extensions are especially valuable when product upgrades should continue to contribute improvements to the base form. They reduce duplicated layout and allow the team to review a smaller, more meaningful diff during future upgrades. They are not automatically low risk, however. An extension that assumes a particular element ID, field location, workflow state, or untested side effect can still fail when the base form changes. Small scope should lead to disciplined testing, not casual testing. [3] [5]
When a new custom screen is the better boundary
A new custom screen is appropriate when the business process is not simply an altered version of a stock form. A dispatcher workbench, a specialized pricing review, a field-service intake workflow, or a multi-step operational queue may need its own task flow, layout, and language. In these cases, trying to attach every interaction to a standard screen can make the customization hard to understand and harder to validate.
The Customization Tool Reference Guide distinguishes new screens from customized screens. Creating a new screen establishes a screen ID, source files, business logic code, and a site-map node; converting a custom screen to Modern UI generates source files, while converting a customized screen generates extension files. Those are useful technical signals, but they should follow the business architecture decision rather than replace it. [4]
A new screen creates a larger ownership commitment. The team must define its navigation, user permissions, data views, actions, error states, localization needs, test coverage, documentation, support path, and upgrade policy. That additional work is justified when it produces a coherent solution. It is not justified merely because the existing stock form feels unfamiliar or because copying it seems faster in a single sprint. [4] [5]
Use decision rules instead of a feature checklist
A feature checklist can produce a false sense of certainty because the same requirement may be implemented differently in different environments. Use a sequence of decision rules instead. First ask whether the primary task is standard Acumatica work. If the answer is yes, begin with an extension hypothesis. Next ask whether the user needs a distinct workflow, distinct navigation, and a layout that cannot be expressed cleanly as an addition to the stock screen. If the answer is yes, investigate a new-screen hypothesis.
Then test the hypothesis against change ownership. Who will decide when the workflow changes? Who will approve a change to a validation rule? Who will maintain customer-specific fields? Who will own support when a user cannot complete a task? A decision that has no named owner is not ready for implementation. It usually points to a business process that needs clarification before the UI is designed.
Finally, compare the operational impact of both designs through a representative task. Have a user complete the work from a realistic starting condition, including an exception. If the extension forces excessive navigation, hidden assumptions, or mental translation, the new-screen option may be clearer. If the new screen duplicates standard actions and causes reconciliation questions, the extension option is likely safer. This is a usability and control decision, not a contest between code styles.
Inspect the Classic UI source before you convert
Conversion should start with evidence, not with the Convert to Modern UI command. Inspect the screen in its current environment and record what users actually do. Capture its entry points, search behavior, filters, mandatory fields, calculations, dialogs, attachments, long-running actions, imports, exports, browser assumptions, screen-specific security, and error messages. Compare these observations with the customization package and repository rather than relying on screenshots alone.
Pay close attention to behavior that is easy to miss during a visual review: ASPX or ASPX.CS code, JavaScript, CSS, automation steps, import scenarios, mobile definitions, hidden fields, graph events, workflow conditions, and integrations that target a screen or view by name. Acumatica's converter guidance explicitly notes that JavaScript in ASPX files and code in ASPX.CS files are ignored by the customization project converter. Those items need a separate review and migration plan. [3]
Identify the acceptance conditions before any generated files are produced. For example, the condition for a sales-order extension might be that an authorized user can save a valid order, an unauthorized user cannot see a protected field, a custom action produces the right outcome, and a downstream connector receives exactly one message. Clear conditions make the generated result testable instead of merely inspectable. [3]
Use the converter as a baseline not as a production answer
Acumatica provides tools for converting custom and customized forms to Modern UI. For a customized form, the customization project converter compares the modern version of the original form with the modern version of the customized form and generates extension files that represent the differences. For a custom form, the converter produces TypeScript and HTML source files. The generated output is valuable because it gives the team a starting structure tied to the source screen. [2] [3]
It is equally important to respect the documented limitation: the converter does not guarantee a perfect conversion. Acumatica recommends backups, development-environment use, review of generated files, required corrections, and full testing before production publication. Treat the tool as an accelerator for an engineering review, not an approval mechanism. A clean conversion log proves less than a user completing a critical task correctly. [2] [3]
For a stock-screen extension, inspect whether the converter placed fields and layout changes at stable, intentional points. For a custom screen, inspect the resulting screen identity, view names, template configuration, IDs, and declared behavior. In either path, remove accidental complexity before adding new enhancements. Migration is the moment to clarify the design, not to carry forward every historical workaround unexamined. [2] [5]
Build an extension around the original screen contract
When extending a stock form, begin by reading the base form as a contract. Understand the user task, standard actions, view names, workflow states, security behavior, and the part of the layout being changed. Make each customization narrow and explainable. A reviewer should be able to answer what the extension adds, why it belongs there, what it depends on, and how it is tested.
Use the Modern UI Editor and extension files to make changes that preserve the base form's intent. Acumatica's UI Development Guide includes patterns for adding elements and tabs, including source-file and customization-project workflows. Follow the conventions documented for the target version rather than copying older Classic UI markup into a new template. The source form may evolve, and conventions are part of the upgrade surface. [5]
Avoid using an extension as a hiding place for unrelated process design. If a tab becomes a complete workflow with its own navigation, persistent state, queue, and support model, pause and reassess the boundary. The immediate code may still compile, but the implementation may no longer be easy for users or maintainers to reason about. Good extensions are focused differences with a clear business owner.
Design a new screen as a product surface
A fully owned screen deserves a brief product definition even when it serves only internal users. State the user role, trigger, task, success outcome, exceptions, data classification, permissions, performance expectation, related standard screens, and support owner. This concise definition turns a custom screen from a collection of controls into a maintained business capability.
Use a screen ID and site-map location that help users and support teams find the function. Keep the initial scope focused on the job users must complete. A custom screen does not need to expose every related field just because the underlying data model permits it. Favor a short, understandable task flow over a surrogate of several standard forms. [4] [5]
The source code should make responsibility visible. Separate data views, UI layout, actions, validation, and integration boundaries so a later maintainer can determine why an interaction exists. Write brief operational documentation alongside the package: what the screen owns, what it delegates to Acumatica, what it must never bypass, and how to recover from a partial failure. That documentation is part of the modernization investment.
Map TypeScript and HTML deliberately
Modern UI forms are defined through matching TypeScript and HTML files. For extensions, Acumatica documents a TypeScript mixin of the original screen class and an HTML template for UI changes. For custom forms, the TypeScript and HTML files define the form's views and layout. The file pair should be treated as one design unit: a data view or action with no clear UI use is a maintenance question, and a control with no clear data or security contract is a defect risk. [2] [5]
Use TypeScript for the view model and behavior that belongs at the UI layer, and use HTML for a semantic, accessible layout. Name views, fields, and control IDs consistently. If the conversion tool generated IDs or template names that do not follow current conventions, correct them while the change is still isolated. Acumatica's conversion guidance specifically calls out reviewing tag IDs, template configuration, and view-related names after generation. [2] [3]
Do not recreate backend business rules in the frontend merely to make a screen feel responsive. The Modern UI should communicate intent, availability, and feedback, while the application still enforces the authoritative rule. Test stale data, concurrent updates, invalid values, and unavailable dependencies. A pleasing interface that accepts an invalid transaction is more dangerous than a visibly unfinished layout.
Keep business logic and UI migration separate
A screen conversion can expose business logic that was previously hidden in Classic UI artifacts. Separate the question of how the form looks from the question of where business rules execute. Graph extensions, DAC extensions, workflow logic, data validation, integrations, and authorization controls may need their own reviews. Do not treat a UI conversion as proof that the underlying behavior remains correct. [7]
This separation makes troubleshooting more efficient. If a user cannot see a control, investigate the UI definition and permissions. If a control is visible but an action fails, investigate the action's conditions, graph logic, integration, or data state. If a result saves but produces an incorrect downstream document, investigate business logic and reconciliation. Keeping these hypotheses distinct prevents teams from changing layouts to mask deeper defects.
It also improves deployment decisions. A team can validate the Modern UI layout in one development cycle while preserving a known business-rule baseline, or it can deliberately schedule a rule change with its own acceptance criteria. Bundling unrelated changes makes the eventual defect difficult to reproduce and obscures whether a migration or a new feature caused it.
Plan for security roles and data exposure
A conversion is complete only when the right people can perform the right task and the wrong people cannot access protected data or actions. Inventory roles, branches, companies, restrictions, approval conditions, attachments, and reporting paths before testing. A developer or administrator account can conceal defects because it sees controls and records that ordinary users should never see. [7]
Test the Modern UI screen with production-like roles. Confirm that fields appear or remain hidden intentionally, selectors are scoped correctly, actions respect approvals, and error messages do not reveal sensitive data. If a custom screen has a distinct security model, document it in user language as well as technical configuration. Security is easier to support when users understand why a control is unavailable.
Treat integrations and exports as data-exposure paths too. A screen may appear secure while an export, generic inquiry, API endpoint, or downstream connector makes data available elsewhere. The custom-screen inventory should note each of these paths and the owner responsible for reviewing them when a new field or action is added.
Test work not just screens
A Modern UI screen that opens successfully has passed a smoke test, not acceptance. Build test scenarios around user work. Include a normal path, a validation error, an approval or security exception, a concurrent-edit situation, an integration or reporting consequence where relevant, and a recovery step. Capture expected results and evidence for each scenario so the team can distinguish a retest from an assumption. [2] [7]
For an extension of a stock order screen, test more than the custom tab. Create, edit, copy, hold, release, cancel, print, import, export, approve, and integrate as the production process requires. For a custom screen, test its own flow plus the standard data it reads or writes. This approach exposes problems that a control-by-control test misses, including workflow state changes and downstream side effects.
Include browsers, devices, record volumes, and user roles that match the operating environment. If the screen supports a warehouse, manufacturing, construction, finance, or field process, observe a knowledgeable user completing a real scenario. Their hesitation, workarounds, and misinterpretations are design findings. Address them before go-live rather than documenting a workaround after it.
Publish through controlled environments
Keep the conversion in a development environment until generated files have been reviewed and task-based testing passes. Acumatica's documentation advises backups, development use, review of generated output, corrections, and full testing before production publication. Follow that sequencing even when a conversion seems small; production risk is determined by the business process around the screen, not the number of files changed. [2] [3]
Use a controlled package set and record the target Acumatica build, customization versions, dependencies, publication order, build logs, test evidence, known limitations, rollback point, and approvals. When a package is updated, retest the workflows it touches rather than assuming a successful publication means a safe release. The same discipline helps when the next Acumatica upgrade changes a base form or behavior. [7]
Have an explicit decision for defects found late in testing: fix and retest, disable the new function, accept a documented risk with a business owner, or defer the upgrade. Do not rely on temporary Classic UI use as the standard contingency for a screen that is moving toward Modern UI. A supported fallback is valuable during diagnosis, but it is not a long-term design strategy. [1] [6]
Make the migration easy to support next year
A readable implementation is the best upgrade preparation. Store source files in version control, document screen ownership, use descriptive names, keep a current package manifest, and record why extension or new-screen was chosen. Link test scripts and acceptance evidence to the screen inventory. A future team should not have to rediscover whether a change was intentional, accidental, or obsolete.
Review every custom screen after a major Acumatica release or a major change to the affected business process. The review should ask whether the original ownership decision still holds, whether the base form now provides a supported option, whether the extension depends on changed UI elements, and whether the test pack covers current roles and integrations. Retirement can be a valid outcome when the original need has disappeared.
Add a lightweight feedback loop for users. Ask where they leave the screen, what they export to spreadsheets, which fields cause repeated questions, and which exceptions require support. These observations help distinguish a true missing capability from a training or naming problem. They also make the next modernization decision evidence-led rather than opinion-led.
A practical conversion sequence
First, inventory and classify the screen. Confirm whether it is a stock-form customization, a fully custom form, or an unknown asset requiring discovery. Name the business and technical owners, capture dependencies, and state the acceptance conditions. This is the architecture gate; do not start conversion until it is complete.
Second, prepare a safe development environment with a representative package set and data conditions. Run the appropriate Acumatica conversion workflow, then review generated TypeScript and HTML alongside the source behavior. Correct conventions, layout assumptions, and migration gaps. Keep a change log that identifies generated output versus deliberate edits. [2] [3]
Third, validate business behavior through task-based testing with realistic roles and data. Confirm security, workflow, integrations, reports, exception handling, performance, and recovery. Publish to the next controlled environment only when the evidence supports it. Finally, update documentation and training so users know the Modern UI path before production cutover. [1] [7]
Common conversion mistakes to avoid
Do not choose a new screen because the stock screen is complicated. Complexity may be a reason to improve training, simplify an extension, or limit the user task. A parallel screen creates a new lifecycle and reconciliation risk unless it genuinely owns a distinct workflow.
Do not assume the converter handles every old artifact. Review JavaScript, ASPX.CS, external calls, import scenarios, custom CSS, and automation deliberately. Generated files can provide a strong starting point without preserving every behavior that grew around the Classic UI screen. [3]
Do not test only as an administrator. Modern UI conversion changes how users locate, enter, and recover from work. Role-based testing identifies permissions and usability issues that an elevated account hides. And do not set the final implementation choice in code before a business owner has agreed on the process it is meant to support.
Establish a conversion backlog that reflects operational risk
Once the ownership inventory exists, turn it into a conversion backlog rather than a list of screens. Each item should state the operational process it supports, the reason it belongs in the release, the proposed implementation boundary, the target environment, dependencies, and a definition of done. A backlog entry that says only "convert INxxxxxx" describes effort but not business value. A useful entry says which role must be able to complete which task and which evidence will prove it.
Rank items by consequence and exposure. A customization used once a quarter may still outrank a daily screen if it controls a major payment, compliance action, period close, or incident response. Conversely, a visually prominent screen may be a low priority if it is a convenience view with a safe workaround. Capture frequency, business impact, data sensitivity, integration coupling, user count, and availability of a manual fallback. These factors make sequencing defensible when time is limited.
Separate modernization work from new feature requests in the backlog. A migration may reveal a chance to redesign a queue, add a dashboard, or simplify a workflow, but a large enhancement can obscure whether the Modern UI baseline is stable. Where possible, first establish an accepted conversion that preserves the required business outcome; schedule optional improvement with its own business case and test scope. This produces clearer diagnosis and more honest delivery commitments. [7]
Handle actions dialogs and asynchronous work explicitly
A screen is more than fields and grids. Inventory every action, dialog, confirmation, file operation, long-running process, and status message that users rely on. For each, state the preconditions, success signal, error behavior, security requirement, and downstream result. This is especially important when users trigger a task that continues after the screen stops responding synchronously; the Modern UI needs to make it clear whether the request started, completed, failed, or needs follow-up. [5]
Avoid replacing a well-understood business action with a generic button that conceals its outcome. If an action releases documents, opens a processing queue, creates a record, or starts an integration, the UI should guide the user to the appropriate evidence: a document number, status, exception view, or confirmation with next step. A success toast by itself is rarely enough for a financial or operational action. The design should support the user's responsibility to verify the outcome.
For dialogs, test both the happy path and interruption. Users may close a dialog, submit incomplete values, lose a network connection, reopen the same record, or trigger the operation twice. Define idempotency and recovery behavior with the backend owner where the action touches an integration or creates a transaction. That discussion belongs in the conversion design even when the visible UI change is small.
Treat data views and performance as design decisions
The right screen boundary also depends on how much data it needs. An extension that adds one calculated field to a supported view is fundamentally different from a new workbench that loads high-volume operational data, combines multiple data sources, and drives repeated updates. Before implementation, define the record volume, common filters, sort order, branch or company scope, expected concurrency, and the maximum response time that keeps the process usable.
Measure performance with representative data and a repeatable task. Record screen load, search or inquiry execution, action completion, dialog responsiveness, and any downstream processing time. Capture the filters, row counts, role, browser, and time of test so a later result can be compared fairly. Avoid promising a generic speed improvement; a result observed on one tenant or dataset may not carry to another. [7]
Use the measurement to choose a user-centered design. A workflow may need a narrow initial query, explicit search criteria, a summarized queue, or a drill-through path rather than a single screen that attempts to show every record. Performance changes behavior: users work around slow screens by exporting, refreshing, or maintaining shadow data. A modernized screen should reduce those incentives, not simply change the presentation layer.
Preserve auditability and financial controls
For screens that affect money, inventory, approvals, or regulated records, define the control evidence alongside the UI acceptance criteria. Confirm which fields are authoritative, what values are calculated, who may override a result, where approvals occur, what event history is retained, and which report or inquiry reconciles the output. A conversion can preserve the visible layout while breaking a reviewer's ability to understand what happened.
Test the complete control chain. A user may enter a record correctly but create a downstream posting, release, tax result, allocation, or integration message that is incorrect or incomplete. Include report review and reconciliation in the test case where they are part of the business control. Document acceptable differences and the role authorized to accept them. This gives the go-live decision an evidentiary basis rather than a collection of screenshots. [7]
Be careful with convenience features that bypass normal review. A custom action that updates multiple records, changes a status, or sends a message can save time, but it needs explicit authorization and recoverability. Design confirmations, restriction checks, history, and exception handling to match the action's consequence. In a Modern UI conversion, retaining a control intentionally is often more valuable than reproducing a legacy shortcut exactly.
Plan user adoption as part of the technical release
Users judge the conversion by whether they can finish their work, not by whether the project generated TypeScript and HTML. Start role-based readiness early. Identify the first screen each role opens, the records they need to find, the decisions they make, the actions they can take, and the exceptions they must recognize. Translate this into brief task guides and practice scenarios that use the final Modern UI configuration rather than draft screenshots. [1] [7]
Train on differences that affect decisions or control, not every cosmetic change. A purchaser may need to know a revised approval cue and a new location for an attachment; a warehouse lead may need to know how a custom queue prioritizes work; a finance reviewer may need to know how to reconcile a converted process. Give each group a safe environment and a realistic task, then capture questions that reveal ambiguous labeling, gaps in permissions, or undocumented exception paths.
Update support materials at the same time. Searchable job aids, service-desk triage notes, escalation routes, and screen-owner contacts reduce the temptation to revert to an older UI or keep a private workaround. Remove instructions that direct people to Classic UI when the Modern UI path is the approved process. Documentation is a migration dependency because stale guidance can create production defects after the code has been accepted. [1]
Use source control and release discipline for UI files
Store Modern UI source files and the customization package in a version-controlled location with a branch or tagging practice that identifies the Acumatica target version. Review changes in small, explainable units. A reviewer should be able to see whether a commit updates a layout, action, view, permission boundary, or generated baseline. Avoid mixing generated conversion output, unrelated refactoring, and new features in one unreviewable change set.
Document the procedure for moving modified source files between the development folder and the customization project. Acumatica's guidance describes reviewing and editing generated files, including work performed in the development folder and subsequent detection or inclusion of modified files. The exact practice should follow the current product documentation and the team's deployment model, but the governing principle is stable: the package published to a test environment must be traceable to reviewed source. [2] [3]
Keep a release note for every screen that records the changed workflow, migration classification, dependencies, target build, evidence links, remaining limitations, and rollback approach. This does not need to be verbose. Its purpose is to prevent future teams from guessing whether an extension may be safely regenerated or whether a custom screen carries hand-authored behavior that needs special care during the next conversion cycle.
Set concrete exit criteria before the production decision
The production decision should be based on exit criteria that both the business owner and technical owner understand. At a minimum, confirm that the implementation boundary is recorded, source changes are reviewed, the customization publishes in the target test environment, critical role-based tasks pass, material defects have owners and dates, and the release team can explain the fallback or recovery action. A completion percentage is less useful than this evidence because percentages do not reveal which control or process remains at risk.
Make the criteria specific to the screen's consequence. A simple inquiry may need accuracy checks, role testing, a performance baseline, and user sign-off. A screen that releases documents or affects inventory should additionally have downstream reconciliation, approval checks, duplicate-prevention tests, integration monitoring, and a confirmed recovery path. The goal is to create enough evidence for an informed decision without pretending that every screen requires the same heavyweight protocol. [7]
Agree on severity language before testing starts. A blocker prevents an essential process, security boundary, financial control, or recovery path. A required-before-go-live defect has a planned correction and retest. An accepted risk has a defined impact, a named owner, an approved workaround, and a date for follow-up. An improvement is useful but does not affect safe operation. This vocabulary prevents a late review from treating every finding as either a disaster or an inconvenience. [7]
Preserve the evidence in a place the next release team can find. Link the screen inventory to test records, defect references, package version, review notes, user materials, and final decision. A later upgrade often begins with a question about why a certain implementation was chosen or what it depends on. A compact evidence trail reduces the effort to answer that question and makes the next conversion cycle safer.
Revisit the decision when the process changes
The extension-versus-new-screen choice is not a one-time label. Revisit it when a stock form receives a major product change, an extension accumulates a separate workflow, a new screen begins to duplicate standard functionality, or a business process changes owner. The review can be brief, but it should answer whether the existing boundary is still clear to users and maintainers. Modernization is successful when the implementation continues to match the operating model, not merely when it once passed conversion tests.
This review should include the people who operate the process as well as the people who maintain the customization. Technical teams see dependencies and upgrade risk; business teams see workarounds, exceptions, and decisions that are not obvious in code. Combining both perspectives makes it easier to retire accidental complexity, preserve necessary controls, and schedule changes before an upgrade turns them into urgent work.
Keep the review factual. Look at support incidents, time spent on rework, unfinished task rates, authorization failures, reconciliation differences, user feedback, performance records, and new product guidance. These are better inputs than a general impression that the screen feels old or new. A small, well-supported adjustment to the architecture can be more valuable than a large visual rewrite that leaves the operating problem unchanged. Review dates should follow real evidence, not a calendar-driven claim of freshness. If a release changes no relevant dependency, record that conclusion clearly and retain the existing test baseline. If evidence shows repeatable confusion or control failure, put a specific corrective action into the product backlog and verify it with the affected role after the change is implemented.
How Biz Tech can help
Biz-Tech Services can help teams turn a screen inventory into a prioritized Modern UI conversion plan, review extension and custom-screen boundaries, and build a testable release path around real operational workflows. The right starting point is a focused assessment of high-consequence screens and the packages, integrations, and roles that depend on them—not a blanket rewrite estimate. [7] [8]
A useful engagement produces decisions your team can act on: which screens should be extended, which require a new-screen design, which can be retired, what must be tested, and what evidence is needed before the next upgrade. That creates a practical roadmap while preserving the business controls that make the ERP system dependable.
Frequently Asked Questions
Do all Acumatica customizations need a Modern UI rewrite?
No. Acumatica states that many business-logic customizations can remain relevant, while UI-specific work needs review and validation. Start with an inventory and separate business rules from UI artifacts. Convert or redesign the parts that depend on Classic UI behavior. [1] [6]
What is the difference between a custom form and a customized form?
A custom form is a screen the customization owns, while a customized form changes an existing Acumatica form. In the documented conversion workflow, custom forms produce Modern UI source files and customized forms produce extension files representing their differences from the original form. [2] [3]
Can Acumatica convert a screen automatically?
Acumatica supplies conversion tools for custom and customized forms. They accelerate a baseline conversion, but the documentation says they do not guarantee a perfect result. Review generated files, correct issues, and fully test before production publication. [2] [3]
When should I extend a stock Acumatica screen?
Extend it when users still perform the stock screen's primary job and the change is focused: a field, tab, action, dialog, localized layout adjustment, or other contextual addition. Confirm the extension does not silently become a separate workflow. [2] [5]
When should I build a new Acumatica Modern UI screen?
Build a new screen when the workflow, navigation, ownership, and user experience are genuinely distinct from a stock form. Plan for the full lifecycle: security, views, actions, testing, documentation, support, and upgrade maintenance. [4] [5]
What should I test after conversion?
Test the work users perform: normal and exception paths, permissions, approvals, validation, downstream documents, integrations, reports, concurrency, performance, and recovery. Include representative roles rather than testing only as an administrator. [2] [7]
Will Classic UI still be available in 2026 R2?
Acumatica's current 2026 R2 documentation says Modern UI is the default and Classic UI is disabled by default. Classic UI-only forms remain a transition concern with warnings, and Acumatica identifies 2027 R1 as the next milestone for their removal. Recheck official release guidance for the target build before a production decision. [1]
What happens to Classic UI JavaScript or ASPX.CS behavior?
Do not assume it moves automatically. Acumatica's customization project converter documentation says it ignores JavaScript in ASPX files and code in ASPX.CS files. Review those artifacts separately and decide how each behavior should be handled in the target design. [3]
Can a converted extension be maintained through future upgrades?
Yes, when it is narrow, documented, version-controlled, and tested against the target release. Reassess dependencies on base-form layout, element IDs, workflows, and permissions on each upgrade rather than treating a past conversion as permanent proof of compatibility. [2] [5]
What is the first deliverable for a Modern UI conversion program?
Create a screen inventory with ownership, dependencies, risk, classification, and acceptance conditions. That document makes it possible to prioritize high-consequence work and choose an extension, new screen, replacement, or retirement deliberately. [1] [7]
Sources
- [1] Acumatica Beacon: Customization Update to 2026 R2: Retirement of the Classic UI
- [2] Acumatica Beacon: Updating a Customization Project for the Modern UI
- [3] Acumatica Beacon: Customization Project Converter
- [4] Acumatica Beacon: Screens in the Customization Tool Reference Guide
- [5] Acumatica Beacon: UI Development Guide for 2026 R2
- [6] Acumatica Community: Classic UI Deprecation in 2026 R2 and FAQ
- [7] Biz-Tech Services: Acumatica 2026 R2 Upgrade Guide
- [8] Biz-Tech Services: Acumatica Implementation Cost 2026
How to Map EZCom Item Numbers to Acumatica Inventory IDs
Mapping EZCom item numbers to Acumatica Inventory IDs is a partner-specific cross-reference task on the Trading Partners screen. The Inventory Items tab lets an administrator choose how the connector should search for an item within the selected Partner Code and associate the matching value with an Acumatica Inventory ID. UPC Code is the only search value demonstrated in the manual.
The Biz-Tech Services EZCom EDI Acumatica Connector uses that item mapping during EZCom order import and requires every imported item to be mapped. This guide concentrates on the Inventory Items cross-reference, the documented validation and warehouse precedence rules, and the separate mappings used for warehouse orders and inventory availability. It does not repeat setup, full data flow, purchase-order import, or quantity synchronization covered in points 13, 30, 47, 64, and 81.
What EZCom Item Number Mapping Does
The Biz-Tech Services Acumatica EZCom EDI Connector resolves each imported EZCom order item through the Inventory Items tab of the Trading Partners screen. The cross-reference area contains dropdown fields that choose how to search for the item within the current Partner Code and then map the result to an Acumatica Inventory ID.
The source illustrates the dropdown with UPC Code. With that value selected, the connector searches for the corresponding UPC Code number and associates the result with the Inventory ID. The documentation does not list the other available search fields, so it does not establish that an SKU, vendor part number, customer part number, or another identifier is available.
This mapping is required for order import. The manual warns that an error message appears when items are not mapped. It does not provide the exact error text, a rejected-line queue, or an automatic replacement-item rule for an unmapped EZCom order line.
EZCom Item Number Mapping at a Glance
Use this sequence to configure and validate the documented partner-specific mapping.
1 Open Trading Partners and select the Partner Code whose EZCom item values need to be mapped.
2 Review Cross-Reference Option and select the entities that should be matched between EZCom and Acumatica.
3 Open the Inventory Items tab and use its cross-reference dropdown to choose the item-search field available for that partner.
4 Enter or select the EZCom item value and associate it with the correct Acumatica Inventory ID. The manual demonstrates this with UPC Code.
5 Confirm that the item-search entity was checked in Cross-Reference Options because only checked entities appear in the dropdown.
6 Review Default Warehouse and warehouse cross-reference behavior separately from the item-number mapping.
7 Retrieve an order for the partner and validate the mapped Acumatica Inventory ID before importing the full order set.
8 If the order reports an unmapped item, return to the Inventory Items tab; do not infer an alias or fallback that the source does not document.
Set the Partner and Cross-Reference Scope
Trading Partners begins with Partner Code, a lookup that identifies the partner whose options are being configured. Item-number mappings are therefore organized in the context of that partner. The source does not state that one mapping automatically applies to another Partner Code.
Cross-Reference Option controls which entities can be matched during the transition. In the cross-reference area, Field identifies the entity whose EZCom and Acumatica values need to be paired. Only checked Cross-Reference Options appear in the Inventory Items dropdown, so an expected item-search field may be unavailable until the corresponding entity is enabled.
The manual separately documents Use Cross Ref for Country, Use Cross Ref for ShipVia, and Use Cross Ref for warehouse. When one is selected and configured, order import uses the matching cross-reference value. Those settings translate country, shipping, or warehouse values; they are not substitutes for the required item mapping on Inventory Items.
The source does not explain whether item-number cross-references are one-to-one, whether duplicate partner values are blocked, whether case or punctuation matters, or whether a mapping can have effective dates. It also does not document bulk loading, spreadsheet import, or an approval process for mapping changes.
Map a Partner Item Value to Inventory ID
On Inventory Items, select the item-search choice exposed by the cross-reference dropdown. The manual describes the purpose of that choice as determining how to search for the item within Partner Code and map it to the Acumatica Inventory ID.
UPC Code is the documented example. If UPC Code is selected, the system searches for an item with the corresponding UPC Code number and associates it with the Acumatica Inventory ID. The source does not identify the exact name of the partner-value column, the Inventory ID column, or a save or process button on the tab.
The Biz-Tech Services EZCom EDI Acumatica Integration should therefore be configured from the fields visible in the installed Inventory Items tab. Do not assume that Inventory ID itself, Inventory CD, Alternate ID, SKU, barcode, or a global trade item number can be selected unless it actually appears among the enabled options.
The mapping is line-relevant because each corresponding item on an EZCom order must be mapped for the order to import. The documentation does not explain whether one unmapped line blocks the entire order, whether other lines are imported, or whether the error identifies the partner value that failed.
Keep Warehouse Mapping Separate from Item Mapping
Partner Settings includes Default Warehouse through Warehouse ID. A warehouse cross-reference can also translate an EZCom warehouse value to an Acumatica warehouse during order import. The source states a precedence condition: Default warehouse must not have a value if the system is expected to take the warehouse cross-reference value.
This condition affects the warehouse on the order, not the item-number-to-Inventory-ID association. A successful UPC Code mapping does not replace the need for the correct warehouse configuration, and a warehouse cross-reference does not resolve an unmapped item.
Inventory Availability has a separate mapping. The manual names Acumatica Warehouse, quantity option, and EZCom Warehouse Code, followed by the parenthetical Item UPC Code. This setup controls the quantity sent from Send Inventory Availability. The wording does not clearly distinguish an EZCom warehouse code from an item UPC code, so verify the actual field labels before documenting a production procedure.
Send Warehouse Order also transmits Warehouse Code, UPC Code, and quantity for each item during shipment processing. That confirms UPC Code in the outbound warehouse message, but the source does not say whether the value comes from the same Inventory Items cross-reference row or from another item field.
Validate Mapped and Unmapped Order Lines
Import Purchase Orders retrieves partner orders and presents IMPORT and IMPORT ALL actions. Before importing an entire grid, test a selected order and confirm that each partner item resolves to the intended Inventory ID.
The clearest documented validation rule is the warning on the Inventory Items section: if items are not mapped, an error message appears during order import. The manual does not quote that message or state where it is logged after the processing screen is closed.
The following checks stay within the documented behavior.
1 Confirm that the correct Partner Code is selected.
2 Confirm that the intended item-search entity is enabled in Cross-Reference Options.
3 Confirm that the corresponding partner item value is associated with the expected Acumatica Inventory ID on Inventory Items.
4 Confirm that Default Warehouse is blank when a warehouse cross-reference must provide the imported warehouse.
5 Retrieve one order and review its items before using IMPORT ALL.
6 If an unmapped-item error appears, correct the mapping and test again. The manual does not document a skip-line, placeholder-item, or auto-create option.
Use the Mapping in Warehouse and Availability Messages
After a mapped order progresses, other EZCom transactions carry item and quantity information. Import Warehouse Shipment brings the item quantity and tracking number from EZCom and updates the shipment. Send Warehouse Order sends Warehouse Code, UPC Code, and quantity for each item.
Send Inventory Availability displays items already loaded and checked on the Inventory Items tab for the partner. It also requires the corresponding Inventory Availability mapping. Selecting Send or Send All synchronizes item quantity according to that mapping.
These outbound and inventory processes depend on the item setup but do not define a broader item alias rule. The source does not say whether changing an Inventory Items mapping updates previously imported orders, warehouse requests, or availability history. It also does not explain whether an item can have more than one UPC Code per partner.
No screen ID is given for General Settings, Trading Partners, Import Purchase Orders, Inventory Items, Inventory Availability, Send Warehouse Order, or Send Inventory Availability. The only screen ID in the manual is Customization Projects (SM204505), used to install the package.
Document Item Class Alias and Precedence Gaps
Item classes are not mentioned in the EZCom Connector manual. The source provides no item-class default, class-based search, class restriction, or inheritance rule for item mapping. Do not use an item class as a documented resolution key without separate product guidance.
No independent alias model is described. Inventory Items supplies a partner-specific cross-reference and demonstrates UPC Code, but the source does not define aliases, alternate IDs, substitute items, customer part numbers, vendor part numbers, multiple barcodes, wildcard matches, or priority among identifiers.
The manual also does not define a fallback for an unmapped item. It promises an error during order import but provides no replacement item, auto-create behavior, correction queue, or reprocessing instructions. An administrator should not borrow missing-item behavior from another connector.
The one documented precedence rule concerns warehouses: leave Default Warehouse empty when warehouse cross-reference should supply the value. No equivalent precedence is supplied for an item value that could match more than one Inventory ID or for multiple item-search entities selected at the same time.
Where to Check Your Work
The Biz-Tech Services EZCom EDI Acumatica Integrator exposes the documented item mapping and downstream result in these locations.
1 Trading Partners: confirm Partner Code before reviewing any partner-specific mapping.
2 Cross-Reference Option: confirm that the required item-search entity is selected so it can appear in the dropdown.
3 Inventory Items: compare the partner item value, selected search field such as UPC Code, and mapped Acumatica Inventory ID.
4 Partner Settings: review Default Warehouse and Warehouse ID separately from the item cross-reference.
5 Cross-Reference: review Country, ShipVia, and warehouse mappings without treating them as item aliases.
6 Import Purchase Orders: retrieve a selected order and confirm that no unmapped-item error appears during import.
7 Inbound Purchase Orders: review the source order information for the corresponding partner when diagnosing a line.
8 Inventory Availability: confirm Acumatica Warehouse, quantity option, and the EZCom warehouse or UPC-related value shown by the installed screen.
9 Send Inventory Availability and Send Warehouse Order: confirm that the intended mapped item appears and that the expected UPC Code and quantity are sent.
EZCom Item Number and Inventory ID Mapping Frequently Asked Questions
Where are EZCom item numbers mapped to Acumatica Inventory IDs?
Use the Inventory Items tab on Trading Partners for the selected Partner Code. Its cross-reference dropdown chooses how to search for the partner item and associate it with an Inventory ID.
Which EZCom item identifier does the connector use?
UPC Code is the only documented example. The manual does not list every selectable search value or state that an SKU, alternate ID, or another field is supported.
Why is an expected item-search field missing from the dropdown?
Only checked entities from Cross-Reference Options appear in the dropdown. Review the options configured for the current Partner Code.
What happens when an EZCom order item is not mapped?
The source says an error message appears during order import. It does not provide the message text or document automatic item creation, line skipping, or a replacement-item fallback.
Can item class control EZCom item matching?
No item-class behavior is documented. The manual does not name item class as a search key, default, restriction, or cross-reference field.
Does Default Warehouse override warehouse cross-reference?
The manual states that Default warehouse should have no value when the system needs to take the warehouse cross-reference value. This warehouse rule is separate from item-number matching.
Does the connector support aliases or several UPC codes for one item?
The Biz-Tech Services Acumatica EZCom EDI Integration documentation does not define aliases, multiple identifiers, duplicate handling, or matching precedence. Confirm any such design with Biz-Tech Services before relying on it.
How can I test a new item mapping safely?
Enable the required cross-reference entity, create the Inventory Items mapping for one Partner Code, retrieve one purchase order, and validate the resolved Inventory ID before using IMPORT ALL or sending downstream availability data.
Work With the Biz-Tech Services EZCom EDI Connector
A dependable EZCom item mapping keeps partner item resolution, warehouse translation, and inventory availability setup separate. Configure the Inventory Items cross-reference first, verify one order, and document every identifier that the installed screen actually exposes.
If you need help validating UPC Code or other partner item mappings, resolving unmapped order lines, or documenting warehouse and availability precedence, visit https://biz-techservices.com to work with the Biz-Tech Services Acumatica EZCom EDI Integrator.
Using AI to Validate Acumatica Customizations Before an Upgrade Safely
AI can accelerate an Acumatica customization upgrade by explaining compatibility errors, locating likely breaking changes, proposing small code updates, and helping developers draft focused regression tests. It cannot prove that a customization is safe to deploy. A defensible validation process still requires the exact target build, official developer release notes, Acumatica compatibility validation, successful compilation, Acuminator or equivalent static analysis, automated tests, publication to a representative sandbox, security review, end-to-end business testing, and documented approval. Acumatica's own guidance follows this pattern: use AI to simplify investigation and remediation, then review every recommendation and validate the accepted change with product-native and engineering controls.[1][5]
That distinction matters because an upgrade defect rarely stays inside one source file. A changed method signature can prevent publication, but a customization can also compile and still produce the wrong document status, bypass a control, expose data, duplicate an external transaction, or fail only when several packages are published together. This guide provides a controlled workflow for using AI without turning probabilistic suggestions into production evidence.
Table of Contents
What AI assisted customization validation means
AI-assisted customization validation is a review and remediation technique inside a larger upgrade process. A developer gives an AI tool relevant source code, a concrete validation or test failure, and authoritative version information. The tool can then explain the likely cause, identify affected symbols, propose a narrow change, or draft a regression test. A human developer decides whether the explanation fits the Acumatica Framework, the business requirement, and the exact target version.
Acumatica documents this approach in two related contexts. Its customization update guidance says an AI tool such as GitHub Copilot can help simplify the correction of compatibility errors when the model receives the appropriate developer release notes and source context. Its 2026 R2 unit-test guidance shows AI helping interpret a reproducible test failure, suggest a targeted fix, and draft regression coverage, while the developer remains responsible for reviewing and validating the result.[1][5]
The word validation can therefore describe several different activities, and they should not be merged into one claim:
- Compatibility validation checks whether project code refers to application objects that still exist with compatible signatures and types.
- Compilation checks whether the source and referenced assemblies build for the target environment.
- Static analysis checks code against Acumatica Framework rules and conventions.
- Automated tests check specific behavior under controlled inputs.
- Sandbox publication checks whether the complete package set can be validated, compiled, and applied to an Acumatica instance.
- Functional and regression testing checks whether real business processes still produce acceptable outcomes.
- Security review checks access, data exposure, credentials, permissions, and control boundaries.
AI can contribute to each review by organizing evidence or suggesting where to look. It is not the authority that closes any of those gates.
What AI can and cannot prove
AI is useful when the work is primarily interpretive. It can connect an error message to a renamed or removed symbol, compare an override signature with release guidance, summarize the effect of a framework change, identify code that depends on an obsolete API, and propose a small replacement. It can also help turn a defect into a focused unit test when the expected business rule is already known.
AI cannot prove that its answer matches the assemblies installed in your target build. It does not know which projects will be published together unless you provide that context. It cannot infer every tenant-specific feature, role, license, workflow, report, event, integration, or data condition. It also cannot establish that a suggestion preserves accounting, inventory, tax, payment, approval, fulfillment, or regulatory behavior.
A safe operating rule is simple: an AI response is a hypothesis or draft patch until independent evidence confirms it. The required evidence depends on the risk of the change. A private helper method may need a build, static analysis, and unit tests. A change to release logic, payment processing, security, inventory allocation, or an external integration needs deeper functional, negative-path, and reconciliation testing.
This model avoids two opposite mistakes. The first is rejecting AI because it is not deterministic enough to approve production changes. Approval is not its role. The second is accepting AI output because it looks technically plausible. Plausibility is not evidence, especially when Acumatica behavior depends on framework lifecycle, cache state, event order, workflow configuration, enabled features, and multiple published packages.
Define the exact target before reviewing code
An Acumatica customization is validated against a target, not against a generic version label. Record the exact build, deployment model, database platform, enabled features, localization, industry edition, authentication pattern, and related ISV packages before asking an AI tool to review code. If the target build changes, repeat the relevant validation and test work.
The build matters because a recommendation based on a release family can still miss a later fix, changed assembly, known issue, or updated compatibility rule. Use the release notes that correspond to the build under test. Acumatica's AI-tool example explicitly tells developers to provide the applicable developer release notes as model context and to verify uncertain recommendations against those notes.[1]
Create a short target facts record with at least:
- current production version and build;
- proposed target version and build;
- deployment model and environment owner;
- application and framework assemblies used for compilation;
- enabled features and relevant licenses;
- database and infrastructure versions;
- localization and industry components;
- every customization and ISV package, including publication order;
- external integrations and scheduled processes;
- the date the release notes and known issues were last checked.
Do not let the AI select a target API merely because it appears newer or cleaner. The correct API is the one supported by the target build and suitable for the intended business behavior. When the official guidance offers no replacement for a removed object, the work may require a redesign rather than a mechanical rename.
For the wider release decision, use Biz-Tech's Acumatica 2026 R2 upgrade readiness guide to connect customization evidence with infrastructure, ISV, reconciliation, cutover, and rollback controls.
Inventory the complete customization surface
Source code is only one part of an Acumatica customization project. The platform can package C# code, DAC and graph extensions, UI changes, database scripts, reports, Generic Inquiries, workflows, mobile definitions, site map entries, import and export scenarios, access configuration, filters, localization, and additional files.[4] A review that sees only an extension library can miss the project item that actually breaks publication or changes runtime behavior.
Build one authoritative inventory for every package in scope. For each project, record its business purpose, owner, source repository, package filename, dependencies, publication level, target-build status, and recovery method. Then list its components by type. Connect each component to the business processes and roles that use it.
The inventory should answer practical questions:
- Which screens, actions, fields, workflows, and reports change?
- Which custom database columns and scripts are included?
- Which base graphs, DACs, methods, fields, attributes, and assemblies does the code reference?
- Which files are copied to the site and which services or libraries do they require?
- Which Generic Inquiries, automation schedules, notifications, or import scenarios depend on the project?
- Which API endpoints, webhooks, file exchanges, or external systems are affected?
- Which projects modify the same objects, and in what order are they published?
- Which Classic UI assets or older mobile definitions need separate 2026 R2 work?
The 2026 R2 transition increases the value of this inventory. Acumatica states that Modern UI is the default, while Classic-only forms remain temporarily accessible in 2026 R2 and are scheduled to become unavailable in 2027 R1. Mobile MSDL mappings created for earlier versions may also need adaptation from WSDL names to Modern UI view and DAC field names.[8][9] An AI code review will not find those non-code dependencies unless they are deliberately included.
Create a trustworthy evidence baseline
Before modifying anything, prove what the customization does in the current supported environment. A baseline gives reviewers something concrete to preserve. Without it, a team can make a package publish successfully while silently changing a calculation, status transition, access rule, report total, or integration outcome.
Use a representative test dataset and record the conditions required for repeatability. Capture the current build, package set, enabled features, relevant roles, test records, expected results, and external-system stubs or safe endpoints. Export the original deployment packages and preserve the source commit used to build them.
The baseline should include three kinds of evidence.
Technical evidence includes successful builds, current compatibility-validation results, Acuminator findings, unit-test results, publication logs, scheduled-process behavior, and performance observations for important paths.
Business evidence includes representative documents before and after processing, status changes, calculations, generated batches, inventory effects, approvals, reports, and reconciliation totals. Capture exception paths as well as the happy path.
Security evidence includes roles, screen and field access, branch or company restrictions, service accounts, API permissions, secrets handling, logs, and audit records. A technically correct upgrade can still be unacceptable if it widens access or exposes sensitive data through a report, endpoint, or error log.
Give every critical baseline scenario a stable identifier. When an AI-assisted patch changes code, link the commit or package to the validation errors it addresses and the scenarios that must be rerun. This makes review faster because the team can see what evidence is relevant to each change.
Run Acumatica compatibility validation first
Start with Acumatica's compatibility validation in a development instance built for the target version. Import all projects that must work together and start publication so the platform can validate them against the target application code. Acumatica recommends this before upgrading a customized instance.[2]
The documented validation examines several important breaking-change patterns. It checks overridden method signatures and base graphs in graph extensions. When a DAC extension overrides a field attribute, it checks that the field exists and its type has not changed. For binary DLLs, it checks referenced methods, properties, fields, return types, and signatures.[2]
Capture the complete validation output before changing code. Preserve the project name, DLL or item path, rule or error text, referenced symbol, and the target build. If multiple projects are selected, keep the result attributable to the correct source package.
Do not disable compatibility checks to create a clean-looking result. Acumatica documents a CheckCustomizationCompatibility setting that can turn off breaking-change validation temporarily, but it does not recommend leaving validation disabled.[2] An ignore list is similarly a controlled exception mechanism, not a substitute for investigation. An ignored message should have a documented reason, owner, target build, compensating test, and review date.
Passing compatibility validation is a necessary technical signal, not a complete upgrade approval. It does not prove that every workflow, report, integration, permission, or business calculation is correct. Continue through the remaining gates.
Classify compatibility errors before prompting AI
An AI tool produces better recommendations when the input identifies the failure class. Acumatica documents several compatibility errors that point to different remediation paths.[3]
Failed to resolve method reference usually means a custom assembly calls a method that no longer exists or whose signature changed. Confirm the change in the developer release notes, then identify the supported alternative. Do not select a method only because its name looks similar.
Failed to resolve type reference indicates that a referenced type is no longer declared in the target assembly. The remedy may be a replacement type, a different framework pattern, or a redesign if the old abstraction was removed.
Could not resolve can indicate a missing dependent assembly. Determine whether the dependency should be in the target site's Bin folder, whether the package omitted it, or whether the upgraded design no longer supports it. Adding random DLLs until compilation succeeds can create version and security problems.
Declaring Type missing means code in a customization item refers to a type that the target application does not declare. Inspect the specific code or DAC item and the official change information before editing.
Referenced Field missing means the customization refers to a DAC field that is not declared. Check whether it was renamed, moved, replaced, or intentionally removed. Then trace every business rule that used it.
Group duplicate messages by root cause before sending them to AI. One removed type can generate dozens of downstream errors. Fixing the first causal issue and rebuilding provides clearer evidence than asking a model to rewrite every affected line at once.
Prepare safe and relevant AI context
Good AI assistance depends on bounded, accurate context. Provide only the material needed to analyze the failure, and make the source of authority explicit. At minimum, include the exact target version and build, the complete error, the relevant developer release-note excerpt, the smallest necessary source file or method, and the intended business behavior.
Useful context can include:
- the failing project and source commit;
- the target Acumatica assemblies or documented API signatures;
- the relevant graph, graph extension, DAC, DAC extension, or helper class;
- the original unit test and its failure output;
- expected and actual values;
- exception message and stack trace;
- Acuminator diagnostic ID and rule description;
- package dependencies and publication order;
- a sanitized description of the business scenario;
- constraints such as "do not change approval behavior" or "preserve external idempotency."
Acumatica's official AI-tool workflow suggests adding the Markdown developer release notes to the extension-library project and referencing that file in the prompt. It also tells developers to review recommendations carefully and double-check them against the release notes when uncertain.[1] That pattern is stronger than an open-ended request such as "upgrade this project" because it defines the version authority.
Do not send the entire production database, raw customer documents, passwords, tokens, connection strings, private keys, or unrelated proprietary repositories to an AI service. Apply the organization's approved data-handling policy and the vendor's commercial terms. Use sanitized records and minimal code context where possible.
Write prompts that constrain the proposed change
A safe prompt asks for analysis before modification. It names the target, evidence, business invariant, and verification plan. It also tells the assistant what not to do.
A useful diagnostic prompt can follow this structure:
Target: use the exact Acumatica ERP build recorded in the approved target facts record.
Authority: use the attached developer release-note excerpt and the target assembly signature.
Failure: paste the complete validation, compilation, test, or Acuminator message.
Business rule: state the expected behavior in one or two sentences.
Relevant code: attach only the smallest necessary file or method.
First explain the likely root cause. Identify the exact symbol or framework rule involved.
Do not modify files yet. Do not suppress validation, remove business checks, change test
expectations, hard-code test data, or rewrite unrelated code.
Propose the smallest supported change. State assumptions and list the build, unit,
static-analysis, sandbox, security, and regression checks required to validate it.
For a failed unit test, include the test method, expected value, actual value, exception, and stack trace. Acumatica's 2026 R2 guidance recommends beginning with a reproducible failure and enough context to distinguish implementation logic, test setup, missing dependencies, and test data.[5]
For an Acuminator finding, include the diagnostic ID, file, message, and severity. Ask the tool to explain the framework rule, classify the finding, propose the smallest change, and state how to verify it. Acumatica's own example explicitly warns against suppressing diagnostics without clear justification and against rewriting unrelated code.[6]
Review AI suggestions as untrusted patches
Read the explanation before reading the patch. If the stated root cause does not match the official change, target assembly, or observed failure, reject the suggestion. A polished diff can still solve the wrong problem.
Review the proposed code against these questions:
- Does every referenced type, method, field, attribute, namespace, and package exist in the target build?
- Does the change follow current Acumatica Framework conventions?
- Does it preserve event order, cache behavior, transactions, workflow, and long-operation semantics?
- Does it keep branch, company, role, and record-level access intact?
- Does it preserve validation rather than bypassing it?
- Does it avoid hard-coded identifiers, credentials, dates, or test-only values?
- Does it change public contracts, database schema, endpoints, reports, or integrations?
- Does it introduce a new dependency or license requirement?
- Can the behavior be covered by a focused test?
- Can the change be rolled back independently?
Reject changes that delete an assertion simply because the test fails, suppress a diagnostic without analysis, catch and ignore a broad exception, turn off a permission check, replace a supported framework pattern with direct database access, or make a large refactor to fix one compatibility error.
Review generated code with the same standard applied to human code. Require a second developer or Acumatica specialist for high-impact changes. AI assistance can shorten investigation time, but it does not reduce the review level required by the risk.
Apply the smallest safe change
Make one causal correction at a time where practical. Commit it separately, rebuild, and rerun the nearest checks. Small changes make it easier to attribute a result, review the diff, and revert the modification if later testing exposes a problem.
Start with errors that block compilation or publication. Then address framework diagnostics, unit-test failures, UI adaptation, reports, integrations, and business regressions. Avoid mixing an upgrade correction with unrelated cleanup or feature work. A combined change creates a larger test surface and makes defects harder to trace.
Document why the replacement is correct. Cite the developer release note, target signature, or framework rule. Record any change in behavior, not only the code difference. If the original pattern had no supported equivalent, document the redesign decision and the business owner who accepted it.
Do not treat a generated patch as self-documenting. The upgrade record should show the original error, the root cause, the approved fix, the reviewer, and the checks that passed. This is especially important when an AI tool contributed to the change because the rationale must remain understandable after the chat context is gone.
Compile against the target build
Compilation is the first deterministic test of an accepted code change. Build the extension library against the assemblies from the exact target environment. Do not compile against a convenient local SDK or a different Acumatica build and assume the result transfers.
Use reproducible dependencies and source control. Record the commit, compiler output, target assemblies, warnings, and produced artifacts. A clean build should be required before running static analysis or publishing the package.
Treat new warnings as review items. A warning may indicate an obsolete API, nullable assumption, assembly mismatch, hidden member, or other issue that becomes material later. Do not ask AI to hide warnings globally. Classify each warning, fix it where supported, or record why it is accepted.
Compilation does not prove runtime behavior. It cannot validate screens, workflows, database migrations, role access, reports, scheduled jobs, external services, or the interaction between multiple projects. It only closes the build gate.
Run Acuminator and static analysis
Acuminator checks customization code against Acumatica Framework rules and conventions. That concern is different from unit testing. A unit test may show that one scenario produces the expected value while static analysis finds a framework pattern that can cause lifecycle, performance, or maintainability problems elsewhere.[5][6]
Run static analysis on the customization code after the build succeeds. Preserve the diagnostic report with IDs, files, locations, messages, and severity. Compare it with the baseline so reviewers can distinguish pre-existing findings from upgrade changes.
AI can help classify a report, but the diagnostic ID and official rule remain the authority. For each meaningful finding, decide whether to fix it now, review it with a subject-matter expert, accept it with written justification, or confirm that it is unrelated to the changed behavior. If a fix is applied, rebuild, rerun the relevant tests, and rerun Acuminator.
Do not run analysis only on the test project when the goal is to validate the customization. Acumatica's 2026 R2 example explicitly directs the developer to analyze the customization project and to build it successfully first.[6]
Use automated tests to protect behavior
Automated tests turn an expected rule into repeatable evidence. The Acumatica Unit Test Framework supports tests for graphs and reusable components in customization extension libraries.[7] In the AI-assisted workflow, the best starting point is a reproducible failure, not a broad request to generate a test suite from unknown requirements.
For an upgrade correction, keep the original failing test when it accurately represents the business rule. Fix the implementation rather than changing the expected result to match the new output. Then add a focused regression test that would fail if the defect returned.
Include positive, negative, boundary, and permission-relevant cases when the risk warrants them. Examples include:
- expected action behavior for a valid record;
- rejection of an invalid status transition;
- correct calculation at zero, minimum, maximum, and rounding boundaries;
- correct behavior when an optional field is absent;
- preservation of branch or company restrictions;
- duplicate prevention for integrations or long-running actions;
- transaction rollback when a downstream step fails;
- behavior under the feature combinations used in production.
AI can draft a test, but the reviewer must verify that the test calls the right graph, establishes realistic cache state, creates valid dependencies, asserts the business rule, and fails for the intended reason. A test that simply reproduces the implementation can pass while both the code and the test are wrong.
Run the full relevant suite after each accepted change. Record the test names, environment, data setup, duration, and result. Keep flaky tests visible rather than rerunning them until green and discarding the failures.
Publish to a representative sandbox
Create or refresh a non-production Acumatica instance on the exact target build. Import the complete approved package set and publish it in the planned order. Acumatica's publication process validates projects and compiles the modified site before final publication; packages with assemblies can restart the application domain.[10]
The sandbox must represent the conditions that affect behavior. Include the relevant features, roles, branches, companies, workflows, data volume, ISV packages, reports, scheduled jobs, integrations, and browser or device paths. Redirect external services to safe test endpoints and prevent test transactions from reaching customers, banks, carriers, tax systems, marketplaces, or other production destinations.
Preserve the validation and compilation log. Confirm that every selected project is present, that the published XML or package composition matches the approved set, and that no unexpected project was unpublished or replaced. Acumatica notes that publishing a selected set can affect projects that were previously published, so verify the complete post-publication state rather than only the package that changed.[10]
Exercise startup, login, navigation, screen loading, scheduled processes, long operations, and integration health before handing the sandbox to business testers. A successful publication message is the start of runtime validation, not the end.
Test security and data boundaries
Upgrade validation must confirm who can do what after the change. Review every new or modified screen, action, endpoint, report, inquiry, workflow, and background process under the actual roles that use it. Test both permitted and denied behavior.
Check branch and company restrictions, field visibility, selector contents, report parameters, export permissions, attachment access, API scopes, and service-account privileges. Confirm that logs and error messages do not expose credentials, personal data, financial details, or internal implementation information.
When AI tools are used during development, review the data boundary twice. First, decide what code and failure evidence may be sent to the tool. Second, inspect the generated change for new data access or logging behavior. A suggestion can accidentally widen a query, remove a filter, expose a field, or write sensitive values to diagnostic output.
Security sign-off should name the reviewed roles, objects, test cases, and reviewer. Do not accept "the code compiles" or "the screen opens" as evidence that access controls remain correct.
Run end to end regression testing
End-to-end testing proves that the customization still supports the business process in the upgraded environment. Start with tier-one workflows: processes whose failure would stop revenue, cash, fulfillment, production, project billing, payroll, compliance, or customer service.
Test complete chains instead of isolated screens. For example, an order customization may affect entry, pricing, credit, allocation, shipment, invoicing, payment, posting, reporting, integration, and return processing. A change can pass on the originating screen while failing later in the chain.
For each scenario, record the role, starting data, actions, expected result, actual result, evidence, and reviewer. Include exception paths such as missing data, approval rejection, partial processing, reversal, cancellation, timeout, retry, duplicate submission, and external-service failure.
Reconcile important outputs. Compare counts, quantities, financial amounts, status distributions, generated batches, inventory values, external transaction identifiers, and report totals with the approved baseline. Define tolerances before testing. A difference that can be explained is not automatically acceptable; it still needs an owner and approval.
If the customization exposes REST operations or integrations, apply the same reliability principles described in Biz-Tech's guide to Acumatica REST long-running operations. Test asynchronous completion, retries, session behavior, idempotency, and reconciliation rather than stopping at an HTTP success code.
Protect source code data and credentials
An AI-assisted review can move source code and diagnostic data outside the development environment. Treat that transfer as a security and contractual decision. Confirm the approved AI tool, account type, data-retention terms, training controls, regional requirements, and project-specific restrictions before use.
Never paste secrets into a prompt. Remove passwords, tokens, certificates, private keys, connection strings, customer records, payroll data, payment data, and production exports. Replace sensitive values with consistent stand-in labels while preserving the structure needed for analysis.
Minimize the code sent to the service. Provide the relevant file or method rather than an entire repository when possible. If the failure depends on several files, list their relationships and add only the necessary context. Keep third-party licensed code out of the prompt unless the license and agreement allow that use.
Preserve an audit record appropriate to the organization's policy. It may include the tool and model, date, user, purpose, files or data classes shared, prompt, response, accepted changes, reviewers, and validation results. Do not store secrets in that record.
For teams establishing broader review and support practices, Biz-Tech's Acumatica implementation partner guide explains why solution architecture, development, testing, training, and operational ownership need to remain connected.
Retain evidence for approval
A safe upgrade decision should be reproducible without reopening an AI chat. Build an evidence pack that connects each customization to its target build, validation results, code changes, tests, and approval.
Include:
- target facts record and last verification date;
- original and final deployment packages;
- source commits and build outputs;
- compatibility-validation logs;
- error classification and root-cause notes;
- relevant release-note references;
- AI prompt and response records when policy permits;
- reviewed diffs and named reviewers;
- unit and regression test results;
- Acuminator or static-analysis reports;
- sandbox publication logs and final package order;
- security-test evidence;
- end-to-end scripts, reconciliations, and accepted differences;
- unresolved risks, owners, due dates, and rollback actions;
- technical and business approvals.
Separate transport or technical completion from business acceptance. A package can compile and publish while the expected operational result remains wrong. Make the approval status explicit: technically validated, functionally tested, security reviewed, business approved, ready for cutover, or blocked.
Avoid a single percentage-complete measure. Ten low-risk tests can hide one failed financial or fulfillment control. Report the open blockers, affected processes, severity, evidence owner, and next decision.
Implementation roadmap
Use the following sequence to introduce AI into customization upgrade work without weakening existing controls.
- Set policy and ownership. Approve the AI tool, data boundary, reviewer roles, evidence retention, and types of changes that require specialist or security review.
- Lock the target. Record the exact Acumatica build, assemblies, features, package set, and authoritative release sources.
- Inventory and baseline. Map project items to business processes, preserve the current package and source, and capture technical, business, and security evidence.
- Run compatibility validation. Collect the complete Acumatica validation output before asking AI to propose corrections.
- Triage root causes. Group errors by causal symbol or dependency and prioritize blockers to build and publication.
- Use bounded AI prompts. Provide the exact failure, authoritative version context, relevant code, business invariant, and prohibited changes.
- Review and patch narrowly. Require a human explanation, supported API, small diff, source reference, and verification plan.
- Build and analyze. Compile against the target assemblies, run Acuminator, and resolve or document diagnostics.
- Test behavior. Run the original and focused regression tests, then the relevant suite.
- Publish to sandbox. Apply the complete package set in order and preserve validation, compilation, and publication evidence.
- Validate security and operations. Test permissions, data boundaries, end-to-end workflows, exceptions, integrations, performance, and reconciliation.
- Approve or block. Use written exit criteria and named technical and business owners. Carry unresolved items into a risk decision rather than hiding them in a summary.
Pilot this approach on one representative project before scaling it across a large portfolio. Choose a package with known tests, clear ownership, and moderate complexity. Measure investigation time, rework, review findings, escaped defects, and evidence quality. Expand only when the process produces reliable results.
Use a written acceptance matrix for the pilot. Each row should name the customization component, business process, technical gate, business test, security check, evidence link, owner, and final status. Mark a row passed only when the required evidence exists for the exact target build. Mark it blocked when a critical result is missing or unacceptable; do not convert missing evidence into an assumed pass. This matrix gives the release owner a concise view of readiness while preserving the detailed logs behind every decision.
Define success in operational terms as well as engineering terms. A faster diagnosis is useful, but not if it increases review effort or lets defects escape. Compare the AI-assisted pilot with a similar conventional upgrade by measuring time to root cause, size of accepted patches, number of review corrections, test coverage added, failed sandbox publications, business regressions, and time required to assemble approval evidence. The goal is controlled improvement, not maximum use of AI.
Biz-Tech Services can help teams connect upgrade planning, customization remediation, sandbox validation, integration testing, and business acceptance. Explore our Acumatica services when the package set is too interconnected for a code-only review.
Common failure patterns and corrections
Failure: asking AI to upgrade the whole repository. The response becomes a broad refactor that is difficult to review and test. Correction: start from a reproducible validation, build, test, or static-analysis failure and request the smallest supported change.
Failure: using generic internet knowledge as the version authority. The suggestion references an API from another Acumatica release or a different framework pattern. Correction: provide the exact target build, developer release notes, and target signature.
Failure: treating compatibility validation as functional proof. The project publishes, but a document status or calculation changes. Correction: preserve a business baseline and run end-to-end scenarios and reconciliations.
Failure: changing the test to match the new output. The defect disappears from the report while the business rule is lost. Correction: keep the expected rule stable unless a named business owner approves a requirement change.
Failure: suppressing Acuminator or compatibility findings to get a green result. The technical risk remains undocumented. Correction: investigate the rule, apply a supported fix, or record an explicit exception with evidence and compensating tests.
Failure: testing one package in isolation. Publication order or shared object modifications create conflicts in the complete environment. Correction: validate and publish the full approved package set in a representative sandbox.
Failure: giving AI secrets or production records. The review creates an unnecessary data exposure. Correction: use an approved tool, sanitize inputs, minimize context, and keep credentials out of prompts and logs.
Failure: accepting a large AI patch because it compiles. The change may alter framework lifecycle, access, or downstream behavior. Correction: review the root cause, split the patch, run static analysis and tests, and publish to a controlled sandbox.
Failure: ignoring non-code project items. Reports, workflows, mobile definitions, Generic Inquiries, or UI assets fail after upgrade. Correction: inventory the full customization project and assign a test to every material component.
Failure: combining upgrade remediation with new features. Review scope expands and defects become difficult to attribute. Correction: stabilize compatibility first, then deliver optional changes through a separate controlled release.
Frequently Asked Questions
Can AI validate an Acumatica customization by itself
No. AI can explain errors, propose code changes, and help draft tests, but it cannot approve an Acumatica customization for production. The package still needs target-build compatibility validation, compilation, static analysis, automated tests, sandbox publication, security review, end-to-end regression testing, and business approval.
What should be provided to an AI tool for an upgrade error
Provide the exact target version and build, complete error message, relevant developer release-note excerpt, smallest necessary source context, intended business behavior, and applicable test or static-analysis evidence. Remove secrets, customer data, and unrelated proprietary code.
Should the entire customization repository be uploaded to AI
Usually not. Start with the smallest context that can explain the failure. Add related files only when the dependency requires them and the organization's policy and vendor terms allow the transfer.
Does successful Acumatica compatibility validation mean the project is safe
It means the checked code did not trigger the relevant compatibility failures for that target environment. It does not prove that business processes, permissions, reports, integrations, performance, or calculations are correct. Those require additional validation.
Can an AI tool choose a replacement for a removed Acumatica API
It can suggest a candidate, but the developer must verify that candidate against the target build, official release guidance, framework behavior, and business requirement. If no supported equivalent exists, the solution may need redesign rather than a direct replacement.
Should a failing test be changed after an upgrade
Only when the approved business requirement changed and the owner accepts the new expectation. If the test still represents the intended rule, fix the implementation and add focused regression coverage instead of rewriting the expected result.
Where does Acuminator fit in AI assisted validation
Acuminator checks Acumatica Framework rules and conventions. AI can help explain and classify its diagnostics, but the diagnostic ID and official rule remain authoritative. Build, tests, and a rerun of Acuminator should verify every accepted change.
Why is sandbox publication required after compilation
Compilation checks source against referenced assemblies. Sandbox publication validates and applies the complete customization package to an Acumatica instance, where project composition, publication order, files, database changes, other packages, and runtime behavior can be evaluated.
What should block production deployment
Block deployment for unresolved compilation or publication failures, material compatibility errors, failed critical workflows, unacceptable reconciliation differences, security defects, unsupported dependencies, missing recovery steps, or absent technical and business approval.
How should AI assisted changes be documented
Record the original failure, target build, authoritative source, AI tool and prompt when policy permits, proposed change, reviewed diff, accepted rationale, tests, static-analysis results, sandbox evidence, security review, and approvers. The decision should remain understandable without the original chat.
Sources
- Acumatica Customization Update Guide - Validation of Customization Projects Using AI Tools
- Acumatica Customization Update Guide - Compatibility Validation
- Acumatica Customization Update Guide - Compatibility Validation Errors
- Acumatica Customization Guide - Customization Project
- Acumatica Unit Test Framework Guide - AI Assisted Diagnostics and Testing
- Acumatica Unit Test Framework Guide - Run the Acuminator Console Runner
- Acumatica Unit Test Framework Guide
- Acumatica Customization Update Guide - MSDL Adaptation Tool
- Acumatica Customization Update to 2026 R2 - Retirement of the Classic UI
- Acumatica Customization Guide - To Publish a Single Project
AI-assisted review is most valuable when it shortens investigation without weakening approval. Use it to understand evidence, draft a narrow correction, and create better tests. Let the exact build, Acumatica validation, compilation, static analysis, sandbox behavior, security controls, and business results decide whether the customization is ready.
How to Map DSCO SKUs to Acumatica Inventory IDs
Mapping DSCO SKUs to Acumatica Inventory IDs uses the cross-reference controls on the Inventory Items tab of DSCO Store. The documented example selects SKU as the search method, finds the corresponding DSCO item, and associates that product with its Acumatica Inventory ID for order import.
The Biz-Tech Services DSCO Acumatica Connector uses this item relationship separately from warehouse and shipping cross-references. This guide focuses on SKU lookup, line-level item matching, unmapped-product errors, and the limits of the source. Earlier DSCO articles cover setup, order-to-cash flow, order import, and inventory quantity synchronization.
DSCO SKU Mapping Definition and Prerequisites
The Biz-Tech Services Acumatica DSCO Connector is installed through Customization Projects (SM204505). After the connection is established, DSCO Store contains General Settings, Order Settings, Cross-Reference, Inventory Items, Inventory Availability, and other connector controls.
Cross-Reference Options determines which entities appear in the Cross-Reference Field list. The Inventory Items tab contains its own cross-reference section with dropdown fields that determine how the connector searches for an item and maps it to Acumatica Inventory ID. The source gives SKU as its only item-search example.
Before importing orders, confirm that the correct Partner Code is selected and that the required entity is enabled under Cross-Reference Options. The documentation does not provide all possible Inventory Items search values, exact mapping-grid column names, or a separate item-master setup screen.
DSCO SKU Mapping Step by Step
Use this sequence to set up and check the documented item relationship.
1 Open DSCO Store for the intended Partner Code.
2 Review Cross-Reference Options and enable the entity required for item matching so it becomes available in the relevant Field list.
3 Open the Inventory Items tab and locate its cross-reference section.
4 Select the item search method from the dropdown. Use SKU when applying the example documented in the source.
5 Associate the corresponding DSCO SKU with the intended Acumatica Inventory ID.
6 Save the DSCO Store record before importing an order or selecting products for quantity synchronization.
7 Retrieve the order on Import DSCO Orders and run the import process.
8 If the order line fails, review the line error, hover over the red cross for more information, and use Tools and Trace when additional detail is needed.
How SKU Search Maps to Inventory ID
The Inventory Items documentation describes dropdown fields that choose how to search for an item within the connector. In its example, SKU is selected. The system searches for the item with the corresponding SKU number and associates it with an Acumatica Inventory ID.
This establishes the documented line-level relationship for DSCO orders. A source product identifier is resolved through the selected search method, and the resulting Inventory ID identifies the item used in Acumatica. The source does not describe a separate item-creation option when that Inventory ID is missing.
The documentation also does not state whether SKU matching is case-sensitive, whether leading zeros are preserved, or how spaces and punctuation are normalized. It gives no rule for duplicate SKU values or for multiple source records pointing to one Inventory ID. Those cases require controlled validation in the configured environment.
Cross References Warehouses and Product Aliases
The Biz-Tech Services DSCO Acumatica Integration uses Cross-Reference Options for more than one entity, but the source separates item matching from warehouse mapping. If Use Cross Ref for Warehouse is selected, the source warehouse value must be mapped to an Acumatica warehouse through Cross-Reference.
The documented warehouse validation is explicit. If a warehouse value is not mapped, order import displays Warehouse does not have value. This error concerns the warehouse relationship, not the SKU-to-Inventory-ID relationship.
The source does not document an Alias field, alternate item ID, vendor part number, customer part number, or precedence among multiple identifiers. Although the Inventory Items dropdown allows a search method to be chosen, only SKU is named. Do not claim that additional aliases are supported without separate approved documentation.
Unmapped Items and Import Validation
The manual warns that an error appears during order import when item values are not mapped. It does not provide the actual item error text, error code, or the exact field displayed in the grid. Therefore, troubleshooting should begin with the SKU selection and Inventory ID association rather than an invented message string.
Import DSCO Orders displays an error on the line corresponding to the order when processing fails. Users can hover over the red cross to view additional information and open Tools and Trace for more detail. These are order-import diagnostics; the source does not define a dedicated unmapped-item inquiry.
No unmapped-record queue, Unmapped status, retry counter, automatic substitute item, or batch remediation action is documented. The source also does not state whether correcting a mapping allows the same retrieved order to be reprocessed or requires retrieving it again.
Item Classes and Other Mapping Limits
The DSCO manual does not document Item Class selection, item-type defaults, unit-of-measure mapping, new-item creation, or product-category mapping. It only describes searching for a source item and associating it with Acumatica Inventory ID.
The manual also does not name product attribute mappings, metadata fields, product variants, or parent-child item relationships. These omissions matter because the selected SKU may identify a product, but the source does not explain how additional product properties are transferred to an inventory record.
Inventory Availability is downstream of the saved item setup. Users choose the required items from Inventory Items on DSCO Store and save them before they appear for quantity synchronization. This requirement confirms that selected item records feed the quantity process, but it does not add another documented identifier or alias rule.
How Inventory Quantity Records Confirm the Item Relationship
Export DSCO Inventory Quantities synchronizes quantities for items selected and saved on Inventory Items. Quantity is a read-only field representing the inventory quantity in Acumatica. DSCO Quantity is editable and can be sent as the source-system inventory quantity.
This screen can confirm that a saved item is available to the downstream process. It does not prove that every SKU on every incoming order is mapped correctly, and it does not expose an alias chain. Use the order-import result to validate the actual line relationship.
Inventory Availability also determines which warehouses contribute to synchronized quantity and whether the value represents On hand, Available, or Available for Shipment. Those warehouse and quantity choices are covered in the inventory synchronization workflow and should not be confused with product identity mapping.
Where to Check Your Work
The Biz-Tech Services DSCO Acumatica Integrator provides these documented checkpoints for SKU mapping.
1 On DSCO Store, confirm the intended Partner Code.
2 Under Cross-Reference Options, confirm that the entity needed for item matching is enabled.
3 On Inventory Items, confirm the selected search method and use SKU when following the documented example.
4 Confirm that the source SKU is associated with the intended Acumatica Inventory ID.
5 Save the DSCO Store record before order import or quantity synchronization.
6 On Import DSCO Orders, review the corresponding order line after processing.
7 If a red cross appears, hover over it for additional information and open Tools and Trace when necessary.
8 If Warehouse does not have value appears, correct the warehouse cross-reference rather than changing the product mapping.
9 On Export DSCO Inventory Quantities, confirm that the selected item appears and that Quantity reflects the intended inventory record.
DSCO SKU Mapping Frequently Asked Questions
What DSCO value maps to Acumatica Inventory ID?
The source example uses SKU. The Inventory Items dropdown selects the search method, and the corresponding SKU is associated with Acumatica Inventory ID.
Does the connector support product aliases?
No product-alias behavior is documented. The manual does not name alternate IDs, vendor numbers, customer numbers, or identifier precedence.
What happens when a DSCO item is not mapped?
The manual says order import displays an error, but it does not give the item-specific error text. Review the line error, the red-cross detail, and Tools and Trace.
Can the connector create a missing Acumatica item?
The Biz-Tech Services Acumatica DSCO Integration documentation does not describe automatic item creation. It describes mapping a searched source item to an existing Inventory ID.
Does Item Class control DSCO product mapping?
No Item Class field or class-based rule is documented for DSCO item mapping. The source also omits item-type and unit-of-measure defaults.
Is the warehouse cross reference part of SKU mapping?
It is a separate relationship. Use Cross Ref for Warehouse maps source warehouse values to Acumatica warehouses. Missing warehouse mapping produces Warehouse does not have value.
Where can I review unmapped products?
The source identifies no unmapped-product queue or mapping inquiry. Review Inventory Items on DSCO Store and the error shown on Import DSCO Orders.
Does the quantity screen validate each incoming SKU?
No. Export DSCO Inventory Quantities confirms that selected and saved items participate in quantity synchronization. Incoming line validation occurs during order import.
Work With Biz Tech Services DSCO Mapping
A reliable DSCO item relationship starts with the intended search method, a consistent SKU, and the correct Inventory ID. Cross-reference setup, order-line errors, and saved Inventory Items provide the documented points for validating that relationship.
For help configuring and validating the Biz-Tech Services Acumatica DSCO Integrator, visit https://biz-techservices.com to learn more about Biz-Tech Services and schedule a personalized consultation.
Handling Acumatica REST Long-Running Operations: 202, Location Polling, 204, and 409
Acumatica REST long-running operations require a two-part client workflow: start the action, then wait for the server-side work to finish before sending a dependent request in the same session. When an action returns 202 Accepted, capture its Location response header and poll that URL with GET. Continue while the status endpoint returns 202; treat 204 No Content as successful completion. Acumatica's current REST documentation also says that, while a long-running operation is executing on a form in the current session, only the request that retrieves that operation's status can succeed; other same-session requests can fail until completion.[1][2]
That protocol is simple on a whiteboard and easy to mishandle in production. Clients often log only the response body, discard the Location header, confuse an HTTP timeout with cancellation of the server process, or immediately send the next action through the same session. The result can be intermittent conflicts, including the familiar message that a long operation is already running for the screen. This guide turns the documented 202-to-204 flow into a resilient integration pattern with explicit session ownership, bounded polling, careful retry decisions, and verification after completion.
This reliability pattern belongs beside broader release planning. If you are preparing an environment change as well as an integration change, start with Biz-Tech's Acumatica 2026 R2 upgrade planning guide and then validate the long-running paths described here against the exact build you intend to deploy.
Table of Contents
What Acumatica means by a long-running REST operation
An Acumatica REST action can initiate work that outlives the request that started it. Releasing a financial document, confirming a shipment, preparing an invoice, generating a report, or processing a group of records may require business logic, database work, external service calls, and transaction processing that should not keep one HTTP request open until every step finishes.
For an endpoint action, the client sends an HTTP POST to the top-level entity and action name. Acumatica documents two successful outcomes. If the action completed immediately or no long operation was created, the response can be 204 No Content. If processing is still underway, the response is 202 Accepted, and the Location header identifies the operation-status resource.[1]
The important distinction is acceptance versus completion. The HTTP specification defines 202 Accepted as a request accepted for processing whose processing is not yet complete. The response is deliberately noncommittal: the work might later succeed or fail. By contrast, 204 No Content means the server successfully fulfilled the request and has no response content to send.[5] In Acumatica's action protocol, 204 from the status URL is the signal that the long-running operation finished.
This means a 202 response is not a green light for the next dependent business request. It is a transition into a monitoring phase. The integration owns that monitoring phase until completion, timeout, cancellation, or a terminal error is recorded.
The response contract 202 Location 204 and 409
The safest implementation treats each response as a distinct control signal.
202 Accepted. The requested action is still in progress. Read the Location response header, resolve it against the request URI if it is relative, and begin polling that status URL. Do not infer the URL from the action name or construct it manually when the server has supplied it. Acumatica's current example shows a status path that includes the endpoint, entity, action, status segment, and an operation identifier.[2]
204 No Content from the original action. The operation completed synchronously or no long-running operation was created. There is no body to parse. Continue to the business-level verification step rather than starting a polling loop.[1]
204 No Content from the status URL. The asynchronous work has finished. Stop polling. Then retrieve the affected document or other business object and verify the expected state, because transport completion does not by itself prove that every downstream business expectation was met.
409 Conflict. RFC 9110 defines 409 as a conflict between the request and the current state of the target resource.[5] Acumatica's action documentation does not list 409 as a universal response for every action, but recent community cases show it accompanying a message such as “A long operation is running for this screen in the current session.”[7] Treat that combination as evidence of session or form contention, not as a generic invitation to retry every request immediately.
Other terminal errors. Acumatica documents 400, 401, 403, 404, 422, 429, and 500 for action calls.[1] Each needs its own policy. Authentication failures should stop and refresh or reauthenticate according to the configured flow. Validation errors should be surfaced with field details. Rate limits need backoff and capacity planning. Server errors need bounded retries only when the operation's state is known well enough to avoid duplication.
Model the workflow as a state machine
Production code is easier to reason about when the operation is represented explicitly instead of being buried inside one HTTP helper. A useful state machine has six states.
- Ready. The integration has a valid authenticated session and no outstanding operation assigned to that session-and-form lane.
- Starting. The client sends the action request once and records the request fingerprint, document keys, endpoint, action, session identifier, and start time.
- Polling. The start response was
202; the client stored theLocationURL and is allowed to send only status requests through that lane. - Completed. The start response or the status request returned
204. Polling stops, but business verification has not yet occurred. - Verified. A follow-up read confirms the expected document or process state.
- Indeterminate or failed. The client lost the response, reached its deadline, received an unexpected status, lost the session, or found a business result that does not match the requested action.
The difference between Completed and Verified matters. Suppose ReleaseSalesInvoice reaches 204, but a follow-up read shows the invoice still on hold or in an unexpected status. The HTTP monitoring protocol is complete, yet the integration outcome is not acceptable. That condition deserves a business error, not a successful job record.
An indeterminate state is equally important. If the TCP connection drops after Acumatica accepted the action but before the client receives 202, the client cannot safely assume that nothing happened. Blindly repeating the action might duplicate an external side effect or hit a form that is already busy. The recovery path should query the relevant business record, consult stored operation data if available, and escalate when the action cannot be proven safe to repeat.
Recognize which requests can become asynchronous
Acumatica's documented flow applies to actions performed through the contract-based REST API. The request URL includes the base endpoint, top-level entity, and action name, and the request body identifies the record and any action parameters.[1] Examples include release, confirm, prepare, process, and report-generation operations, but the exact behavior depends on the endpoint, action, version, configuration, and customizations.
Do not build a global rule that every POST is asynchronous or every PUT is synchronous. Instead, define an operation profile for each integration step:
- HTTP method and endpoint path;
- expected synchronous success statuses;
- whether
202is documented or observed; - whether
Locationis required when202occurs; - the business record used for post-completion verification;
- retry safety and possible external side effects;
- session and form concurrency constraints;
- expected duration under representative load.
Acumatica's official C# client reinforces this action-specific design. Its InvokeActionAsync method sends the action, verifies the response, and returns the Location header. Its WaitActionCompletionAsync method repeatedly retrieves process status, returns on 204, continues on 202, and treats other results as exceptional.[3] The official console example wraps shipment confirmation, invoice preparation, and invoice release calls with WaitActionCompletion before moving to the next dependent step.[4]
That pattern is more reliable than trying to infer long-running behavior from elapsed time. A request that returns quickly may have only queued the real work. A request that takes several seconds might still complete synchronously. Status and headers are the protocol; duration is only telemetry. Biz-Tech's practical Acumatica integration lessons provide more context for treating API behavior, process ownership, and recovery as one system.
Capture the Location header correctly
The Location value is a response header, not a JSON field. Logging only the response body will miss it. That omission is one reason integrations appear to receive an “empty successful response” and then unexpectedly collide with a still-running operation.[7]
Capture at least these values for every action response:
- HTTP method and sanitized request URI;
- status code;
Locationheader, if present;- correlation or trace identifiers exposed by the application, proxy, or client;
- elapsed request time;
- session lane identifier, never raw credentials or sensitive cookies;
- entity keys and action name;
- a redacted response body for errors.
When the status is 202, validate that Location exists and contains a usable URI reference. RFC 9110 allows Location to be relative; resolve it against the effective request URI.[5] Restrict the resolved URL to the expected Acumatica origin unless your architecture intentionally supports a trusted alternate host. This prevents a malformed or compromised response from turning the polling client into an arbitrary URL fetcher.
Do not synthesize the status URL from a copied example. Endpoint names, versions, entities, action names, locale segments, and operation identifiers vary. Use the value returned by the target instance. Store it as operation data, protect it as potentially sensitive telemetry, and retain it long enough to diagnose a failed run.
A 202 without a usable Location is a protocol error. Do not send the next dependent request and do not pretend that sleeping for a fixed interval is equivalent to monitoring. Record the response headers, endpoint version, build, and action, then stop or enter a controlled recovery path.
Poll in the same authenticated session
The status request must preserve the authentication and session context associated with the action. With cookie-based login, that means reusing the same cookie container or HTTP client. With OAuth 2.0 or OpenID Connect, it means preserving the applicable authorization context and, when concurrent access session IDs are managed through cookies, the documented Cookie header behavior.[1]
Acumatica's official client constructs its HttpClient with a CookieContainer, retains the ASP.NET_SessionId, and uses the same client for action invocation and process-status requests.[3] That implementation detail reflects an operational rule: an operation started in one session might not be visible from another. The official client even maps a 404 during status retrieval to a message that the process may have been started in another session.[3]
The session relationship creates two obligations.
First, do not let a generic HTTP client factory replace or clear the cookie container between the action and the poll. A new client instance with the same username is not automatically the same server session. Likewise, load-balanced environments must preserve whatever affinity and cookie behavior the deployment requires.
Second, do not use the polling session for unrelated work while the operation is active. Acumatica states that only the status request can execute successfully for a form with a long-running operation in the current session; other requests in that session fail until completion.[1] A shared session pool that ignores this rule can cause one worker to interfere with another even when the business records are unrelated.
Treat the session as leased to the operation. The lease begins when the start request is sent and ends only after terminal status, verification, and cleanup. If the session is lost, mark the operation indeterminate and use an explicit recovery policy. That lifecycle matters in real connector designs such as ShipStation-to-Acumatica data flows and DSCO-to-Acumatica data flows, where business sequencing and session ownership must agree.
Choose a safe polling interval and deadline
Polling too aggressively wastes application capacity and can worsen the load that made an operation slow. Polling too slowly increases end-to-end latency and holds a session lane longer than necessary. Acumatica's current documentation requires a delay between status checks but does not prescribe one universal interval.[2] The official C# client defaults to a one-second interval.[3] A community answer suggests two to five seconds as a reasonable range in one scenario.[6]
Use those values as starting points, not promises. A practical policy is:
- start at one or two seconds for interactive operations expected to finish quickly;
- increase the delay gradually for longer operations;
- add small random jitter so many workers do not poll in lockstep;
- cap the interval so completion is still detected promptly;
- honor a server-provided retry signal if the endpoint supplies one and your implementation has verified its meaning;
- enforce an overall deadline based on the action's normal and worst-case duration.
For example, delays could progress from 1 second to 2, 3, 5, 8, and then remain capped at 10 seconds. Jitter of plus or minus 10 to 20 percent spreads load without materially delaying completion. The exact values should come from measurements on the target build, data volume, customization set, and infrastructure.
The deadline should be longer than the HTTP request timeout for each poll. Each GET needs its own network timeout, while the whole operation needs a separate elapsed-time deadline. When the overall deadline expires, stop issuing automatic status requests, record the operation as timed out or indeterminate, and follow a recovery workflow. Do not automatically conclude that Acumatica stopped processing.
Separate client cancellation from server completion
Cancelling an HTTP request usually stops the client from waiting; it does not prove that the server-side operation was cancelled. A cancellation token, socket timeout, reverse-proxy timeout, or job-runner shutdown can all end the local wait while Acumatica continues processing.
This distinction explains a common failure sequence:
- The integration posts an action.
- The client times out or is cancelled.
- The worker assumes the action stopped.
- The worker immediately retries or sends the next request in the same session.
- Acumatica reports a conflict because the original operation is still running.
The correct response to cancellation depends on what the client knows. If it already received 202 and saved the Location, the operation can be resumed by a recovery worker that owns the same session context, subject to authentication and deployment constraints. If it never received the start response, the outcome is uncertain. Query the business record and any safe operation history before deciding to replay.
Design cancellation as a state transition, not an exception that erases context. Persist the action fingerprint, start time, session lane, last status, status URL, poll count, and last successful communication. A shutdown handler can then release or transfer ownership without claiming that the server task was cancelled.
If the business needs true cancellation, verify that the specific Acumatica operation exposes a supported cancellation mechanism. Do not assume that cancelling the HTTP call provides it.
Handle 409 conflicts without creating duplicates
A 409 Conflict says that the request cannot be completed in the resource's current state.[5] In an Acumatica integration, one possible current-state conflict is a form that is already executing a long-running operation in the same session. A recent community case reported a 409 and the message “A long operation is running for this screen in the current session. Please try again later.” The discussion traced the issue to a prior action whose 202 and Location header were not being monitored.[7]
Do not reduce all 409 responses to “sleep and retry.” First classify the conflict:
- Does the response body identify an active long operation?
- Did a previous request in the same session return
202? - Is there a stored
LocationURL for that session lane? - Is the conflicting request an action, a record update, or another operation?
- Could a retry repeat a financial, fulfillment, payment, or external-system side effect?
If an outstanding status URL exists, resume or continue polling it. When it reaches 204, verify the business result, then decide whether the rejected request is still necessary. A request rejected before it reached business processing may be safe to send once after the lane is free, but that conclusion should come from endpoint-specific tests and logs.
If there is no captured Location, inspect the immediately preceding requests, including headers and statuses. The Location belongs to the call that started the operation, not to the later request that conflicts.[7] If the initiating response was lost, move into an indeterminate recovery path rather than repeatedly hammering the endpoint.
Use bounded attempts. Repeated 409 responses after the expected operation duration can indicate a stuck session, failed cleanup, a customization, or an unexpected action path. Preserve the evidence and escalate with the instance build, endpoint version, form, request sequence, correlation IDs, and System Monitor observations.
Isolate sessions when work must run concurrently
One integration worker often handles several document pipelines at once. The tempting design is a singleton authenticated client shared by every worker. That is efficient for sockets but dangerous for session-scoped long operations. If one action leases the session and form lane, another worker can collide with it.
Use a session manager that makes concurrency explicit. Common models include:
- one authenticated session per sequential integration worker;
- a bounded pool of session lanes, each allowing only one outstanding long operation for an affected form;
- separate service principals or OAuth concurrent-access sessions where licensing, security policy, and Acumatica configuration permit them;
- a queue keyed by session and form, so dependent operations serialize while unrelated lanes can proceed.
Do not create unlimited sessions as a workaround. Acumatica documents 429 when requests exceed license restrictions, and session limits are part of capacity planning.[1] A safe pool has a configured maximum, health checks, idle expiration, and metrics for wait time and utilization.
Session isolation does not remove business-level concurrency hazards. Two sessions can still attempt incompatible changes to the same order or invoice. Use document-level coordination, optimistic concurrency where available, and post-write verification. Session lanes protect the REST conversation; they do not replace business locking or workflow rules.
Also define ownership for a status URL. Exactly one worker should poll a given operation at a time. If a worker crashes, a lease timeout can allow recovery, but the replacement must use the correct session context or deliberately enter a documented alternative recovery path.
Do not assume every PUT participates in the 202 flow
Developers often add if status == 202 logic around one action and expect it to explain every later conflict. That fails when the integration's problematic request is a different method or when an earlier hidden action started the work.
Acumatica's documented action execution uses POST; record creation and update commonly use PUT.[1] In the recent Sales Orders community case, the developer's order-creation PUT returned 200 or a later 409, while the relevant 202 was associated with an action call in the sequence.[7] That observation should not be turned into a permanent rule that a PUT can never involve server-side long work. Customizations, external tax, payment processing, and version-specific behavior can complicate the lifecycle.
Instead, log the complete request sequence. For each call, record method, endpoint, status, response headers, elapsed time, and session lane. Then map the sequence around the conflict:
- Which call last succeeded?
- Did any prior response return
202? - Was its
Locationstored and polled? - Did a network timeout hide the response?
- Did the application reuse the session concurrently?
- Does the target build behave differently from the integration's test build?
This evidence-first approach prevents a client from waiting on the wrong request or looking for a Location header on the 409 response itself. It also respects the topic brief's key accuracy constraint: long-operation behavior must be validated for the target endpoint and build, not presented as a universal defect in a specific release.
Verify the business result after 204
204 is the end of the status-monitoring protocol, not the end of integration validation. After completion, perform a fresh GET for the affected entity and check the fields that define success.
For a released invoice, that may include the document status, hold flag, released flag, batch reference, and expected financial totals. For a confirmed shipment, it may include confirmation status, shipment number, packages, tracking data, and linked orders. For a processing action, it may include per-record results and error fields. For a report, completion may lead to a separate retrieval response containing the generated file rather than a document-state check.
Verification should be narrow and deterministic. Do not compare an entire payload when only three fields define completion. Record the expected values before starting the action, then evaluate them after 204. If the result is eventually consistent, allow a short, bounded read-after-completion retry policy that is separate from the long-operation poll.
This extra read provides three benefits. It confirms the business effect, produces evidence for support, and makes retries safer. A job that restarts after losing its local success record can check whether the document already reached the intended state before repeating the action.
When verification fails, preserve both layers of evidence: the successful operation-status trace and the unexpected business payload. That distinction helps determine whether the issue lies in the action, a customization, downstream processing, or the client's success criteria.
Make retries safe with operation-aware idempotency
Retries are not a single feature. A network retry, a conflict retry, a status-poll retry, and a business-action replay have different risk.
Status GET retries are normally the least risky because they retrieve operation state. Retry transient connection failures with bounded backoff while the overall deadline remains open.
Start-request retries before any response are risky because the server might have accepted the first request. Before replaying, query the business record and operation evidence. If the action cannot be proven idempotent, send the case to manual review.
Retries after a documented rejection may be safer when logs prove the request never entered business processing. Even then, confirm that the endpoint and build behave as expected.
Retries after 204 should usually become verification reads, not repeated actions. Reissuing a release, payment capture, shipment confirmation, or external call after success can generate errors or duplicate effects.
Create an operation key from stable business inputs such as tenant, entity, document type, document number, action, and an integration job identifier. Store the key before starting. The record should include the action request hash, timestamps, responses, Location, final status, and verification result. On restart, the worker consults that ledger before deciding whether to start, resume, verify, or escalate.
Do not claim idempotency merely because the HTTP method is commonly described as idempotent. Business actions invoked with POST often are not. A custom endpoint might also produce external side effects that Acumatica cannot roll back. Idempotency must be established at the operation and business level.
Instrument the entire operation lifecycle
Long-running integrations are difficult to support when logs contain only “request failed.” Observability should reconstruct the timeline without exposing credentials or sensitive business data.
Record structured events for action start, start response, poll attempt, poll response, completion, verification, timeout, cancellation, conflict, retry decision, and manual escalation. Include:
- operation key and correlation ID;
- tenant or company identifier in an approved, non-sensitive form;
- endpoint name and version;
- entity, action, and sanitized document key;
- session lane identifier;
- HTTP status and elapsed time;
- redacted
Locationfingerprint and optionally the protected full URL; - poll count and next delay;
- final business verification outcome;
- Acumatica build and customization package version when available.
Useful metrics include action acceptance rate, synchronous completion rate, long-operation duration percentiles, poll count, 409 count by action, timeouts, session-pool saturation, 429 responses, verification failures, and recovery outcomes. Alert on trends, not isolated slow calls. A rising 409 rate paired with missing Location values usually points to a client instrumentation or sequencing problem; a duration shift after an upgrade may point to data, customization, or environment changes.
Protect logs carefully. Cookies, access tokens, raw authorization headers, personally identifiable information, payment data, and complete financial documents do not belong in general application logs. Redact at the logging boundary rather than relying on operators to avoid sensitive fields.
Finally, make the trace easy to export. A support bundle containing the ordered request timeline, statuses, headers, build, endpoint version, and document keys is far more actionable than screenshots of a final error.
Production ready polling pseudocode
The following pseudocode emphasizes state ownership and decision points rather than a particular language:
function executeAction(sessionLane, actionRequest, policy):
operation = ledger.begin(actionRequest.fingerprint, sessionLane.id)
response = sessionLane.send(actionRequest)
operation.recordStartResponse(response.status, response.headers)
if response.status == 204:
operation.markTransportComplete()
return verifyBusinessResult(operation, sessionLane)
if response.status != 202:
return classifyStartFailure(operation, response)
location = resolveAndValidateLocation(
base = response.effectiveRequestUri,
value = response.headers["Location"],
allowedOrigin = sessionLane.baseOrigin)
if location is missing or invalid:
operation.markIndeterminate("202 without usable Location")
raise ProtocolError
operation.storeStatusLocation(location)
deadline = clock.now + policy.operationTimeout
delay = policy.initialDelay
while clock.now < deadline:
wait(addJitter(delay))
statusResponse = sessionLane.get(location, timeout = policy.pollTimeout)
operation.recordPoll(statusResponse.status)
if statusResponse.status == 202:
delay = min(policy.maxDelay, policy.nextDelay(delay))
continue
if statusResponse.status == 204:
operation.markTransportComplete()
return verifyBusinessResult(operation, sessionLane)
if statusResponse.status == 404:
operation.markIndeterminate("status not found in this session")
raise SessionOrOperationNotFound
operation.markFailed(statusResponse.status, statusResponse.body)
raise UnexpectedOperationStatus
operation.markIndeterminate("operation deadline exceeded")
raise OperationTimeout
The routine deliberately does not resend the action when a poll fails or the deadline expires. Recovery is a separate process with business-aware rules. It also does not reuse the session lane for unrelated calls while polling.
A practical C sharp implementation pattern
In .NET, use one HttpClient and cookie or authorization context for the action and its status requests. The following example is illustrative; adapt authentication, serializers, logging, and retry policy to the target environment.
public async Task PollAcumaticaActionAsync(
HttpClient client,
Uri actionUri,
HttpContent body,
TimeSpan overallTimeout,
CancellationToken cancellationToken)
{
using var start = await client.PostAsync(actionUri, body, cancellationToken);
if (start.StatusCode == HttpStatusCode.NoContent)
return;
if (start.StatusCode != HttpStatusCode.Accepted)
throw await CreateApiExceptionAsync(start);
if (start.Headers.Location is null)
throw new InvalidOperationException(
"Acumatica returned 202 without a Location header.");
var statusUri = start.Headers.Location.IsAbsoluteUri
? start.Headers.Location
: new Uri(start.RequestMessage!.RequestUri!, start.Headers.Location);
if (!SameOrigin(actionUri, statusUri))
throw new InvalidOperationException("Unexpected status URL origin.");
var deadline = DateTimeOffset.UtcNow + overallTimeout;
var delay = TimeSpan.FromSeconds(1);
while (DateTimeOffset.UtcNow < deadline)
{
await Task.Delay(AddJitter(delay), cancellationToken);
using var status = await client.GetAsync(statusUri, cancellationToken);
if (status.StatusCode == HttpStatusCode.NoContent)
return;
if (status.StatusCode == HttpStatusCode.Accepted)
{
delay = TimeSpan.FromSeconds(
Math.Min(delay.TotalSeconds * 1.5, 10));
continue;
}
throw await CreateApiExceptionAsync(status);
}
throw new TimeoutException(
"The Acumatica operation is still unresolved at the client deadline.");
}
This pattern aligns with the official Acumatica client at a high level: invoke the action, retain Location, query process status, continue on 202, and return on 204.[3][4] A production implementation should add persistent operation records, response-header logging, a session-lane lease, rate-limit handling, and post-completion business verification.
The sample also checks the status URL origin. That is a general defensive measure, not an Acumatica-specific documented requirement. If the deployment legitimately returns another host because of a proxy or public URL configuration, validate the approved host set explicitly rather than disabling the check.
Test matrix for long running integrations
Test against the exact Acumatica build, endpoint version, customizations, authentication mode, proxy path, and representative data volume. The expected outcome below describes client behavior; actual server statuses must be confirmed for each action.
| Scenario | Server signal or condition | Expected client behavior | Evidence to retain |
|---|---|---|---|
| Synchronous completion | Action returns 204 | Skip polling, verify business result | Start status, elapsed time, verification fields |
| Normal asynchronous completion | Action returns 202 with Location; polls return 202 then 204 | Lease session, poll with delay, stop at 204, verify result | Location fingerprint, poll timeline, final read |
| Missing Location | Action returns 202 without usable Location | Stop dependent requests; mark protocol error or indeterminate | Full response headers, build, endpoint, action |
| Relative Location | Location is a relative URI | Resolve against effective request URI and validate origin | Raw and resolved values |
| Immediate completion during first poll | Action returns 202; first GET returns 204 | Complete without extra delay and verify result | One-poll trace |
| Long but healthy operation | Polls return 202 for several intervals | Continue within deadline using backoff and jitter | Duration, poll count, load context |
| Client request timeout | Network wait ends before response | Do not assume server cancellation; enter recovery | Exception, elapsed time, request fingerprint |
| Overall deadline exceeded | Status remains 202 beyond policy | Stop polling, mark indeterminate, preserve Location | Last status, deadline, operation ownership |
| Session lost | Status GET returns 404 or authentication fails | Do not construct a new success; recover or escalate | Session lane, auth event, status URL |
| Same-session competing request | Another request is sent while operation runs | Prevent through lane lease; if conflict occurs, resume polling | Conflicting request and preceding 202 |
| 409 long-operation conflict | Response identifies a long operation on the form | Find prior 202/Location; wait and verify before considering one retry | Ordered request/response trace |
| Validation failure | Action returns 400 or 422 | Surface field errors; do not poll | Sanitized error payload |
| Rate limiting | Action or poll returns 429 | Apply bounded rate policy; reduce concurrency; preserve operation state | Retry timing, pool utilization |
| Server error during start | 5xx before outcome is known | Treat replay as potentially unsafe; verify business state first | Request hash, response, record snapshot |
| Server error during poll | Status GET returns 5xx or network error | Retry status read within policy; do not repeat action | Poll attempt and next-delay decision |
| Worker crash and restart | Process stops with saved Location | Resume only when session context is valid; otherwise use recovery path | Persisted ledger and lease history |
| Business verification mismatch | Poll reaches 204 but record state is unexpected | Mark business failure and escalate; do not replay blindly | Final status trace and entity payload |
| Two sessions same document | Separate lanes act on one record | Enforce document-level coordination and conflict policy | Operation keys and document lock history |
Run each scenario at least once in a non-production environment. Repeat the normal and long-running cases under representative concurrency. Include custom actions and integrations that call external tax, payment, warehouse, or shipping services, because their timing and side effects can differ from stock examples.
Implementation roadmap
A controlled rollout can be completed in six stages.
1. Inventory actions. List every REST call that invokes an action, generates a report, or processes records. Record the endpoint version, form, method, expected statuses, and business verification fields.
2. Fix response capture. Ensure logs and client wrappers preserve status codes and response headers. Add a hard check for 202 without Location. Remove helpers that discard headers before the integration layer sees them.
3. Add the operation ledger. Persist the operation key, request hash, session lane, timestamps, Location, poll history, terminal transport state, and business verification state. Make updates atomic enough to survive worker restarts.
4. Introduce session lanes. Prevent unrelated work from using a session assigned to a running operation. Bound the pool to licensed and operational capacity. Add queue-time and utilization metrics.
5. Implement and test polling. Start with measured intervals, jitter, a maximum delay, per-request timeouts, and an overall deadline. Exercise every row of the test matrix on the target build.
6. Deploy with observation. Release to a small workload, compare operation durations and conflicts with the prior baseline, and review every timeout or 409. Increase concurrency only when session-lane behavior and business verification remain stable.
The implementation should have a named owner across development and operations. Developers own the state machine and retry safety. Acumatica administrators validate sessions, endpoint versions, permissions, and System Monitor behavior. Functional owners define the business result that must be verified. Infrastructure teams confirm proxy timeouts, DNS, TLS, load-balancer affinity, and logging paths.
Common failure patterns and corrections
Failure: treating 202 as success. The worker sends the next request immediately. Correction: treat 202 as “accepted and still processing”; store Location and poll to 204.
Failure: reading only the body. The integration reports an empty response and loses the status URL. Correction: log status and headers for every call; retrieve Location from the response header.
Failure: sleeping without polling. A fixed five-second pause sometimes works and sometimes does not. Correction: use the server-provided status resource and stop only on a terminal result or deadline.
Failure: assuming timeout cancels Acumatica. The client retries while the original operation continues. Correction: mark the outcome indeterminate and use status or business-state recovery.
Failure: sharing one session across concurrent workers. An unrelated job collides with the active form. Correction: lease bounded session lanes and serialize affected work.
Failure: retrying every 409. The client creates a retry storm or repeats an unsafe action. Correction: classify the conflict, locate the preceding operation, wait for completion, verify state, and retry only when endpoint-specific evidence says it is safe.
Failure: stopping at 204. The transport workflow succeeds, but the document remains in an unexpected state. Correction: read the business object and validate explicit success fields.
Failure: hard-coding the status URL. The integration breaks when endpoint versions or paths change. Correction: consume the returned Location and validate it.
Failure: using a new session for status checks. Polling returns not found or loses the operation context. Correction: preserve the authenticated session from action start through completion.
Failure: calling the behavior a universal product defect. A fix is built around assumptions from one screen or upgrade. Correction: reproduce on the exact endpoint and build, capture the complete request sequence, and distinguish documented behavior from community observations.
Frequently Asked Questions
What does 202 Accepted mean in the Acumatica REST API
For an endpoint action, 202 Accepted means the operation is in progress. The response should include a Location header whose URL can be queried with GET to retrieve the operation status.[1] It does not mean the business action has finished.
Where is the Location URL returned
It is returned in the HTTP response headers of the request that started the asynchronous action. It is not normally a field in the JSON response body. Log headers as well as bodies so the URL is not lost.
How long should an integration poll the Location URL
Use a bounded policy based on measurements for the target action and environment. Acumatica requires a delay between checks, and its official C# client defaults to one second.[2][3] Increase the interval for longer operations, add jitter, and enforce an overall deadline.
Does 204 No Content prove the document reached the expected business state
It proves completion of the documented operation-status workflow and carries no response content.[1][5] The integration should still retrieve the affected entity and verify the fields that define business success.
Should the status request use the same session
Yes. Preserve the same authenticated session and cookie context. The official client uses a persistent HttpClient and cookie container, and its status handling recognizes that an operation may not be found when started in another session.[3]
Why can a later request receive a 409 conflict
One possible cause is that a prior long-running operation is still active on the form in the same session. Current Acumatica documentation says other requests in that session fail until the operation completes, and a recent community case connected that condition with a 409 and long-operation message.[1][7] Inspect the exact response and request timeline before deciding.
Can a client retry the action after a timeout
Not automatically. The server may have accepted the original action even if the client did not receive the response. Check the operation ledger and current business record first. Replay only when the action's idempotency and endpoint behavior make it safe.
Does every Acumatica PUT return 202 for long work
No universal rule should be assumed. The documented action pattern uses POST, while common record creation and update requests use PUT.[1] Test the exact endpoint, build, configuration, and customization, and log the entire sequence surrounding a conflict.
Can multiple long operations run at the same time
Concurrency may be possible through separate, properly managed sessions, subject to licensing, server capacity, business-record coordination, and endpoint behavior. Do not run concurrent actions through a shared session lane that is already leased to an active operation.
Is the official Acumatica C sharp client enough
The official client provides useful primitives for invoking actions and waiting for completion.[3][4] A production integration still needs persistent operation records, session-pool governance, observability, business verification, security controls, and a recovery policy tailored to its side effects.
Sources
- Acumatica Integration Development Guide - Execute an Action That Is Present in an Endpoint
- Acumatica Integration Development Guide - Retrieve the Status of the Release Operation
- Acumatica official REST API C# client - action invocation and completion polling
- Acumatica official REST API C# console example
- RFC 9110 - HTTP Semantics
- Acumatica Community - Previous operation has not been completed
- Acumatica Community - 26 R1 upgrade long-running process error on SO301000
Biz-Tech Services helps teams design, test, and stabilize Acumatica integrations that must remain reliable across upgrades, customizations, and real production workloads. If your integration is losing Location headers, colliding with session-bound operations, or retrying uncertain actions, explore our Acumatica integration services and request an integration reliability review before the next release or volume increase.
How to Map ShipStation Items to Acumatica Inventory Items
ShipStation items are connected with Acumatica inventory through the Inventory Details tab on the ShipStation Store screen. The documented controls load local Stock and Non-Stock items, load products from ShipStation, retrieve one ShipStation product by its Stock Keeping Unit, or SKU, and generate missing items locally.
The Biz-Tech Services ShipStation Acumatica Connector also defines what happens when an imported order contains a product that is not present locally. Import Item can create the new record with configured defaults, while other settings can generate a SKU through the ERP numbering sequence. The source does not show a dedicated item cross-reference table or an alias field.
What ShipStation Item Mapping Does in Acumatica
The Biz-Tech Services Acumatica ShipStation Connector uses Inventory Details as the documented item workspace. It can display local Stock and Non-Stock items, display products retrieved from ShipStation, export local items to ShipStation, and generate local items from ShipStation products that do not already exist.
The guide describes item synchronization and creation rather than a manual row that pairs one ShipStation SKU with one Acumatica Inventory ID. Load ShipStation Item by SKU can retrieve the exact external product, but the source does not name the internal key used to determine whether that product matches an existing item.
For order imports, Import Item checks whether the item exists. If it does not, the system can create a new item record. Defaults for Imported Item Type, Item Class, unit of measure, or UOM, and Warehouse ID appear when Import Item is selected. These settings define new-item creation; the guide does not say that they remap an existing product.
Before Mapping ShipStation Items
The ShipStation Store's Integration Option controls which tabs and item functions are available. For ShipStation-to-Acumatica processing, the visible tabs include General Info, Import Info, Ship Via Cross Reference, Warehouse Cross Reference, and Inventory Details. Inventory Details is not listed for the opposite integration direction in the source.
The Store Code identifies the corresponding ShipStation store. General Info can retrieve connected stores with Get Stores, and Selected identifies the store used to import orders and shipments. Confirm the store and integration direction before reviewing items so that the Inventory Details data belongs to the intended store.
Test Credentials checks the API connection configured through Consumer Key, Consumer Secret, and Base URL Shipstation Credentials. This is a connection test, not an item-mapping validation. The guide does not describe a separate test for SKU matching.
Map ShipStation Items to Acumatica Inventory Items Step by Step
The documentation provides item actions and import settings rather than one formal mapping wizard. The following sequence stays within those documented controls.
1 Open the ShipStation Store and confirm that Integration Option is set to ShipStation to Acumatica
2 Confirm Store Code and the selected ShipStation store in General Info
3 Open Inventory Details and use Load Acumatica Items to display Stock and Non-Stock items
4 Use Load ShipStation Items to retrieve and display products from ShipStation
5 When a specific external item must be reviewed, use Load ShipStation Item by SKU and enter its SKU
6 Use Generate Items in Acumatica from ShipStation when a ShipStation item does not exist locally and should be created
7 If order import should create missing items automatically, select Import Item and set Imported Item Type, Item Class, UOM, and Warehouse ID
8 Decide whether Use Numbering Sequence for SKU Generation should create a new SKU when no existing SKU number is found
9 Import a controlled order and review the resulting line before processing a larger set of orders
How Import Item Handles Missing Products
Import Item defines the documented missing-product behavior during order import. When selected, the system checks whether an item exists in Acumatica and creates a new item record when it does not. The default fields that appear with this option supply the type, class, UOM, and warehouse for the created item.
When Import Item is not selected and a new product is encountered, the guide says the system automatically assigns default values such as Replace Missing Products for the item name and uses the Warehouse ID from setup. It does not explain whether Replace Missing Products is an Inventory ID, description, placeholder record, or another value.
No unmapped-record queue, pending-review status, or exception inquiry is documented. The source also does not say whether several unknown products share the same placeholder, whether an order remains importable, or how a placeholder is replaced with the final inventory item later.
Item Type Item Class UOM and Warehouse Defaults
Imported Item Type, Item Class, UOM, and Warehouse ID appear only when Import Item is selected. They are documented as defaults for creating new items in Acumatica. This is the guide's only item-class behavior: one configured Item Class can be applied during creation.
The manual does not describe class-specific mapping rules, multiple classes chosen by SKU pattern, or an item-class cross-reference. It also does not define how Imported Item Type affects Stock versus Non-Stock creation or whether the UOM must already exist in Acumatica.
Warehouse ID is a creation and import default in this section. Warehouse Cross Reference is documented separately and maps warehouses between the systems. The source does not state that warehouse cross-references participate in identifying the inventory item itself.
How SKU Generation Works for a Missing Number
Use Numbering Sequence for SKU Generation applies when the system does not find an existing SKU number during item creation. When enabled, it generates a new SKU from the numbering sequence configured in Acumatica. The guide says this produces consistent and unique SKUs for created items.
The source does not identify the numbering sequence screen, field, format, prefix, or next-number behavior. It also does not say what happens to the original ShipStation SKU after a different local SKU is generated or which value is used on later imports.
No rule is provided for blank SKUs, duplicate SKUs, case differences, spaces, leading zeros, or SKU length. Those cases should not be assigned undocumented matching behavior.
Inventory Details Actions for ShipStation Products
The Biz-Tech Services ShipStation Acumatica Integration provides five documented item actions in Inventory Details. Together they load data from either system, export local product data, retrieve one product by SKU, or create missing local items.
Load Acumatica Items retrieves all Stock and Non-Stock items and displays them in a table. Update ShipStation Items from Acumatica exports the listed items to ShipStation so external product data reflects current local information. Load ShipStation Items retrieves external products and displays them locally.
Generate Items in Acumatica from ShipStation creates a local record when an item exists in ShipStation but not locally. Load ShipStation Item by SKU retrieves one specific external product. The guide does not name the table columns, selection checkboxes, generated Inventory ID field, or result status for any action.
Cross References and Alias Coverage
The source documents Cross-Reference Options for warehouses and Ship Via methods. Use Cross Ref for Warehouse reveals the warehouse-mapping tab, and Use Cross Ref for Ship Via reveals the shipping-method-mapping tab. It does not document Use Cross Ref for Item or an item cross-reference tab.
Load ShipStation Item by SKU supplies direct SKU lookup, but the guide does not call that value an alias or describe alternate identifiers. There are no documented customer part numbers, vendor item numbers, universal product codes, external product IDs, or many-to-one alias rules for items.
Because an item cross-reference structure is not shown, the article cannot assign field names or precedence rules to one. Inventory Details and the Import Item creation settings are the documented controls for this topic.
Validation Rules and Item Mapping Gaps
The ShipStation guide does not document an item-validation button, mapped or unmapped status, line-level item error field, duplicate warning, or validation report. Import ShipStation Orders can display an error when a store uses the wrong Integration Option, but that check validates store direction rather than item mapping.
The source also does not state how the system decides that an item exists, what field is compared with the ShipStation SKU, or whether a generated item is Stock or Non-Stock under each Imported Item Type. No behavior is documented for conflicting matches or for an item that exists but is inactive.
A controlled import is therefore the available documented confirmation path. The manual says Get Orders retrieves ShipStation orders and Import sends selected orders to Sales Orders in Acumatica, but it does not list the item fields to inspect on the resulting line.
Where to Check Your ShipStation Item Setup
The Biz-Tech Services ShipStation Acumatica Integrator exposes the following documented places to review store direction, item creation defaults, and inventory actions.
1 On ShipStation Store, confirm Store Code and Integration Option
2 In General Info, use Get Stores and verify that the intended ShipStation store is Selected
3 In Item Information, review Import Item, Imported Item Type, Item Class, UOM, and Warehouse ID
4 Review Use Numbering Sequence for SKU Generation when the product has no existing SKU number
5 In Inventory Details, use Load Acumatica Items to display local Stock and Non-Stock records
6 Use Load ShipStation Items or Load ShipStation Item by SKU to display the external product
7 Use Generate Items in Acumatica from ShipStation only when the missing external product should create a local item
8 On Import ShipStation Orders, retrieve a controlled order and inspect the Sales Order created by Import
ShipStation Item Mapping Frequently Asked Questions
Where can I load ShipStation items for review in Acumatica?
Use Inventory Details on the ShipStation Store configured for ShipStation to Acumatica. Load ShipStation Items retrieves external products and displays them locally.
Can I retrieve one ShipStation product by SKU?
Yes. Load ShipStation Item by SKU retrieves a specific product by its SKU and displays it in Acumatica.
What creates a missing Acumatica inventory item?
The Biz-Tech Services Acumatica ShipStation Integration can create a missing item through Import Item during order import or through Generate Items in Acumatica from ShipStation in Inventory Details. The guide does not explain precedence when both are used.
Which defaults are used when Import Item creates a record?
Imported Item Type, Item Class, UOM, and Warehouse ID appear as defaults when Import Item is selected.
What happens when Import Item is not selected?
For a new product, the guide says default values such as Replace Missing Products are assigned for the item name and the setup Warehouse ID is used. It does not explain the resulting record structure.
Can ShipStation items be mapped through an item cross reference?
The documentation only defines cross-references for warehouses and Ship Via. It does not show an item cross-reference option or tab.
Can different SKUs be treated as aliases for one inventory item?
No alias behavior is documented. Load ShipStation Item by SKU performs a direct lookup, but the guide does not describe many-to-one aliases or alternate item identifiers.
How can I validate an item mapping before importing orders?
The source does not provide an item-mapping validation action. Review the store, creation defaults, and Inventory Details, then use a controlled order import to confirm the resulting line.
Work With Biz Tech Services on ShipStation Item Setup
ShipStation item setup depends on the correct store direction, the Inventory Details actions, and the missing-item defaults used during creation. The source supports direct SKU retrieval and product generation but does not document an item alias table or formal mapping validator.
If your team needs help reviewing item creation and SKU behavior, the Biz-Tech Services Acumatica ShipStation Integrator can support your connector setup. Visit https://biz-techservices.com to contact Biz-Tech Services or schedule a personalized demonstration.
Available-to-Promise in Acumatica 2026 R2: Setup, Sales-Order Behavior, and Pitfalls

Estimated reading time: approximately 58 minutes.
Available-to-Promise in Acumatica 2026 R2 helps a distributor answer a practical question during sales-order entry: when can the full open quantity of this stock item be covered and shipped from the selected warehouse? The calculation looks beyond current on-hand inventory. It processes configured supply and demand in date order, applies the order type's ATP horizon and safety-stock policy, and returns an ATP date for an eligible line. It can also calculate the date on which the entire order can ship in full.
That answer is useful only when the inputs reflect the company's fulfillment policy. An ATP date is not a guarantee from a supplier, a warehouse reservation, or a substitute for allocation and shipment processing. It is a calculated commitment signal based on the documents, dates, warehouses, item classes, order types, and quantities that the configuration tells Acumatica to consider. A sound rollout therefore combines setup, data review, worked scenarios, reconciliation, user guidance, and post-launch monitoring.
This guide explains the 2026 R2 feature, the distinction between ATP and familiar inventory quantities, the configuration sequence, sales-order behavior, a detailed example, testing, governance, integrations, and common failure patterns. Product behavior and field names are based on the Acumatica 2026 R2 form reference and release materials available on 21 October 2026. Validate the process in the organization's exact build before using ATP dates in customer commitments.
Table of Contents
- What Available-to-Promise means in Acumatica 2026 R2
- Why distributors need a date-based promise
- ATP compared with on hand available and available for shipping
- ATP compared with capable to promise and inventory planning
- The four configuration layers behind an ATP date
- Enable the Available-to-Promise feature deliberately
- Create ATP calculation rules that match fulfillment policy
- Assign ATP rules through item classes
- Configure order types for cumulative look-ahead
- Choose an ATP horizon that covers relevant supply
- Decide whether ATP should protect safety stock
- Understand the dates used on a sales order
- How the cumulative look-ahead calculation works
- How line-level and order-level ATP differ
- Worked ATP example with supply demand and safety stock
- How warehouse selection changes the promise
- Which sales-order lines are eligible for ATP
- How order status and unconfirmed shipments affect the action
- How shipping rules and back orders interact with ATP
- Allocation is different from an ATP calculation
- Purchase orders transfers and replenishment in the ATP timeline
- Special cases that need separate testing
- ATP behavior for imported and integrated sales orders
- Data quality controls before implementation
- A practical ATP test plan
- Reconcile an ATP date to its source documents
- Design permissions ownership and exception handling
- Roll out ATP without disrupting order entry
- Monitor promise quality after go-live
- Common ATP pitfalls and how to diagnose them
- Available-to-Promise implementation checklist
- Frequently Asked Questions
- Sources
What Available-to-Promise means in Acumatica 2026 R2
Acumatica defines the Available-to-Promise feature as the ability to determine when a sales-order line, or the sales order as a whole, can be shipped to a customer in full. The feature lets an organization create multiple ATP calculation rules, assign them to item classes, select which order types use ATP, and configure the calculation settings for those order types. The 2026 R2 Enable/Disable Features reference describes that scope directly.
The result is a date. For a qualifying sales-order line, Acumatica determines the earliest date on which its full open quantity can be covered. For the order, the system can calculate the date on which all eligible lines can be shipped in full. The Sales Orders form reference documents both calculations and the conditions under which the commands appear.
The phrase can be covered is important. ATP considers a time-phased series of quantities. It starts with the applicable available quantity at the beginning of the horizon, then adds supply and subtracts demand in chronological order according to the ATP rule. When the running balance can cover the quantity being evaluated, the system has a candidate coverage date. If the order type requires shipment, lead time to the customer's location is part of the displayed ATP result.
ATP is therefore more informative than reading one quantity from an inventory inquiry, but it remains dependent on recorded facts. A purchase order with an optimistic promised date can pull the calculation forward even when the vendor is habitually late. A sales order missing from the included demand categories can make supply look freer than it is. A warehouse with stale transfer dates can produce a technically consistent answer that operations cannot deliver.
Acumatica announced general availability of 2026 R2 on 1 October 2026 and identified Available-to-Promise as a new Distribution capability. The official release announcement says the distribution enhancements are intended to support more reliable customer commitments; the practical control is still the tenant's own configuration and data. See the Acumatica 2026 R2 release announcement and 2026 R2 release overview.
Why distributors need a date-based promise
Sales teams often receive a simple question: can we deliver the requested quantity by the customer's date? Inventory systems commonly show several quantities, but none necessarily answers the date question alone.
On-hand quantity describes what the system records physically. Available quantity applies an availability calculation rule to on-hand inventory and selected additions and deductions. Available for shipping removes quantities that are already shipped, allocated, in unavailable locations, or tied to certain unreleased transactions. These numbers describe a current state. They do not, by themselves, show how future receipts and future demand unfold across a sequence of dates.
A date-based calculation matters when the answer changes over time. Consider an item with 20 units available for shipping today, customer demand for 15 units tomorrow, a purchase receipt for 50 units next Tuesday, and another demand document for 30 units on Wednesday. The business cannot safely tell a customer asking for 40 units that “50 are coming next week” without evaluating what consumes those units and when.
ATP gives order-entry users a documented timeline behind the result. In the line-level calculation dialog, Acumatica lists the supply and demand documents considered, their dates, reference numbers, positive or negative quantities, and the running Available-to-Promise quantity. That transparency makes the answer reviewable. A user can see whether the date depends on a specific purchase order, transfer, return, production supply, or competing demand document.
The business benefit does not come from displaying another date field. It comes from replacing informal promise logic with a shared rule. Customer service, sales, purchasing, inventory planning, and warehouse operations can discuss the same documents instead of relying on different spreadsheets or memory. The rule also exposes disagreements that need policy decisions: whether on-hold orders consume supply, whether safety stock is protected, which inbound documents count, and how far forward the system should look.
The Biz-Tech Acumatica Distribution ERP guide provides broader context for sales orders, availability, allocation, replenishment, purchasing, receiving, and warehouse fulfillment. ATP sits between these processes. It reads their recorded supply and demand to support a promise; it does not execute the downstream work.
ATP compared with on hand available and available for shipping
The safest ATP rollout begins with a shared vocabulary. Users should not use on hand, available, available for shipping, and available to promise as if they were interchangeable.
On hand is the recorded physical quantity. It is useful for inventory control, but a portion may already be allocated, shipped, stored in a location excluded from availability, expired, or otherwise unsuitable for a new order.
Available is a configurable quantity. The Inventory Allocation Details reference describes it as on hand plus total additions minus total deductions. The selected availability calculation rule determines which plan types are additions and deductions. Two item classes can therefore show different available behavior when their rules differ.
Available for Shipping focuses on what can support shipping from the warehouse. Acumatica calculates it from on hand after deducting shipped quantities, quantities allocated for sales, production, and service orders, quantities in warehouse locations excluded from availability, unreleased issues, certain kit-assembly component demand, and certain kit-disassembly quantities. This value can be lower than on hand for valid operational reasons.
Available to Promise produces an earliest coverage date based on future supply and demand, the quantity to promise, the selected warehouse, the ATP rule assigned to the item's class, the order type's horizon, and the safety-stock choice. It uses Available for Shipping as a visible starting context in the calculation dialog, but it answers a different question.
| Measure | Primary question | Time focus | Main limitation |
|---|---|---|---|
| On hand | What quantity is recorded physically? | Current | Does not show commitments or future events |
| Available | What quantity remains under the assigned availability rule? | Current with configured plan effects | Depends on rule design and may not represent ship-ready stock |
| Available for Shipping | What quantity can support shipment after operational deductions? | Current | Does not determine when future supply will cover a larger request |
| Available to Promise | What is the earliest date the full quantity can be covered? | Time-phased future horizon | Depends on document dates, rule scope, warehouse, horizon, and safety-stock policy |
This distinction should appear in training, order-entry procedures, and test scripts. If a salesperson expects ATP to reserve inventory, the process will fail even if the calculated date is correct. If a planner expects the current available quantity to account for future receipts, the planner may reject a valid ATP result because the measures answer different questions.
The same distinction matters for integrations. A commerce connector may publish On Hand, Available, or Available for Shipment, while ATP is evaluated during sales-order work. Biz-Tech's DSCO inventory synchronization guide shows why the exported quantity basis and selected warehouses must match the fulfillment policy. Publishing a current quantity to a channel and calculating a future promise date are related but separate controls.
ATP compared with capable to promise and inventory planning
Available-to-Promise should also be separated from Capable-to-Promise and from Distribution Requirements Planning.
Acumatica's manufacturing Capable-to-Promise, or CTP, evaluates when manufactured items can be completed by considering production capacity and manufacturing constraints. The official Capable-to-Promise general information describes finite scheduling, resource availability, raw-material lead times, subassemblies, and planning or production orders. CTP is a manufacturing scheduling workflow. The new Distribution ATP feature is a supply-and-demand coverage calculation for sales-order lines and orders.
The two terms can sound similar because both support customer commitments. Their models are not equivalent. ATP does not automatically prove that a production work center has capacity, that engineering is complete, or that a configurable item can be produced on the candidate date. The Sales Orders reference explicitly excludes configurable lines from the ATP calculation. A manufacturer should continue to use the documented CTP workflow where production capacity is central.
Distribution Requirements Planning, or DRP, has another purpose. DRP creates time-phased planning recommendations and exceptions so the organization can procure or transfer inventory when it is needed. ATP reads configured supply and demand to answer a commitment question. DRP helps decide what supply actions should be taken. One can reveal that a quantity is not coverable within the ATP horizon; the other may guide the planner toward a purchase or transfer response.
This boundary prevents overclaiming. ATP can make existing supply-and-demand information more useful at order entry. It does not repair inaccurate lead times, create vendor capacity, reserve transport, authorize procurement, or schedule production. Those responsibilities remain in the appropriate purchasing, transfer, warehouse, planning, and manufacturing processes.
The four configuration layers behind an ATP date
An ATP date becomes available only when four layers align.
- Feature layer. The Available-to-Promise feature must be enabled on Enable/Disable Features (CS100000).
- Rule layer. An availability calculation rule with the Available-to-Promise rule type must define the supply and demand categories to consider.
- Item layer. The ATP calculation rule must be assigned to the relevant item class on Item Classes (IN201000), so qualifying stock items inherit the rule.
- Order layer. The sales-order type must use Cumulative with Look-Ahead in the ATP Calculation field, with an ATP horizon and an explicit safety-stock decision.
The sales-order line then has to meet the documented eligibility conditions. It must contain a stock item, use the Issue operation, remain incomplete, not be configurable, and not have a related unconfirmed shipment. The order must be in a status that permits the ATP command.
This layered design is valuable because it prevents one global rule from being forced onto every item and transaction. A distributor can define different ATP rules for item families that have different supply reliability or demand behavior. It can enable ATP for order types used in customer commitments while leaving other types on the default Do Not Calculate setting.
The flexibility also creates a diagnostic requirement. When Calculate ATP is absent or an ATP Date remains blank, the cause may be at any layer. Troubleshooting should begin with the configuration chain rather than with a code assumption.
Enable the Available-to-Promise feature deliberately
Enable the feature first in a nonproduction environment. The feature makes ATP controls available on the related forms, but the implementation work begins after the checkbox is enabled.
Before activation, define the business owner and the desired scope. The owner should be able to answer these questions:
- Which sales-order types create customer-facing commitments?
- Which stock-item classes should receive an ATP rule?
- Which supply documents are reliable enough to count?
- Which demand statuses should reduce promise capacity?
- Should safety stock be protected from promises?
- How far into the future are inbound dates considered credible?
- Who can accept or override the resulting date?
Enabling a feature without these decisions can produce inconsistent use. One item class may be configured quickly while another is missed. A test order may show the ATP command, leading users to assume the feature is complete, even though only a subset of items has rules.
Record the configuration baseline before changing it. Export or document the relevant item classes, availability rules, order types, warehouses, locations, safety-stock values, lead times, and representative open documents. This evidence supports testing and rollback. It also helps distinguish a new ATP issue from a pre-existing availability or data-quality problem.
Treat activation as a governed configuration change. Use a sandbox or copy of production data, schedule representative tests, document expected results, and obtain functional approval before deploying. The feature's purpose is operational, so a technically successful enablement is not enough.
Create ATP calculation rules that match fulfillment policy
Use Availability Calculation Rules (IN201500) to create a rule whose Rule Type is Available-to-Promise. The 2026 R2 Availability Calculation Rules reference distinguishes this rule type from the standard Available type. The ATP rule is used to calculate dates for stock items in sales-order lines and for the order, based on future supply and demand.
The rule's checkboxes decide which recorded events affect the timeline. Demand options include issues, prepared sales, open sales orders, shipped quantities, allocations, back orders, service-order demand, production demand, kit demand, transfer demand, and project-material demand where the related features apply. Supply options can include purchase orders, prepared purchases, purchase receipts, transfers, sales returns, kit assembly supply, production supply, and material supply.
Do not select every checkbox because it exists. Each inclusion needs a business interpretation. A prepared purchase order may represent credible supply in one organization and an unapproved draft in another. An on-hold sales order may represent real customer demand or an unqualified quote-like request. The rule should reflect the meaning of statuses in the organization's process.
Use a decision worksheet with four columns:
| Plan category | Include or deduct | Business interpretation | Test evidence |
|---|---|---|---|
| Open purchase orders | Include when selected | Approved expected supply with a maintained promised date | PO and receipt scenario |
| Purchase orders on hold or pending approval | Include only if policy treats them as credible | Proposed supply that may still change | Approval-status scenario |
| Open sales orders | Deduct when they represent active demand | Competing customer demand | Two-order priority scenario |
| Prepared or on-hold sales orders | Deduct only when their status consumes promise capacity | Demand not yet released to ordinary processing | Hold and release scenario |
| Back orders | Deduct when they remain valid demand | Unfulfilled demand that competes for future supply | Receipt-to-backorder scenario |
| Transfer supply and demand | Match the interwarehouse policy | Expected movement into or out of the selected warehouse | Paired transfer scenario |
| Sales returns | Include only with a realistic return expectation | Potential inbound stock with condition risk | Return and inspection scenario |
Some items need different policies. Fast-moving stocked goods may rely on purchase orders and transfers. Special-order items may be tied to purchase-to-order documents. Repair parts may receive unpredictable returns. Segmenting item classes can be safer than constructing one permissive rule for the entire catalog.
Document the rationale beside the technical setup. When a result is questioned months later, the team needs to know why a plan type was selected, not merely that the checkbox is selected.
Assign ATP rules through item classes
The ATP rule is assigned in the ATP Calculation Rule field on Item Classes (IN201000). The Item Classes reference states that only an availability calculation rule with the Available-to-Promise type can be selected.
This assignment is a major control point. An eligible sales-order line must contain a stock item whose item class has an ATP rule. If the rule is missing, the line will not qualify even when the feature and order type are configured.
Review item-class design before mass assignment. Item classes often group records for financial, replenishment, tax, or reporting reasons, not solely for promise behavior. One class may contain items with very different lead-time reliability. If a single rule would be misleading, consider whether item-class restructuring is appropriate or whether the ATP rollout should begin with a narrower set.
Do not assume that new items will always inherit the intended rule without review. Add the ATP rule to the new-item governance checklist. When a stock item is created or moved between classes, validate its promise behavior with the same care applied to availability, replenishment, and accounting defaults.
For existing catalogs, produce an exception report that shows active stock items with their item class, assigned ATP rule, default warehouse, and relevant planning attributes. Flag items in customer-facing order flows that have no ATP rule. Also flag discontinued, obsolete, non-stock, configurable, or special-process items so the project does not spend time testing lines that are outside the intended scope.
Configure order types for cumulative look-ahead
On Order Types (SO201000), the Available-to-Promise Settings section appears when the feature is enabled and the order type uses an eligible automation behavior. The Order Types reference lists Invoice, Sales Order, RMA Order, and Mixed Order automation behaviors for this section.
ATP Calculation has two choices:
- Do Not Calculate, the default, leaves ATP dates inactive for orders of that type.
- Cumulative with Look-Ahead processes supply and demand in chronological order within the horizon and can consider supply expected after the requested date.
Select Cumulative with Look-Ahead only for order types where a promise calculation belongs in the workflow. Review custom order types separately. A copied order type may have different operations, automation behavior, shipping expectations, or integration dependencies even when its code resembles the standard SO type.
An order type is also a contract with integrations. E-commerce, EDI, customer portals, PDF-order automation, and custom connectors frequently choose the destination order type during import. Changing ATP settings on that type can alter what users see on imported orders and what downstream processes might read. The underlying order creation does not automatically calculate or publish an ATP date unless the workflow invokes the appropriate action, but the configuration becomes part of the transaction's behavior.
Capture the old and new settings for every affected type. Confirm the automation behavior, default operation, shipping requirement, shipping rule, back-order behavior, quick-process settings, and integration mappings. ATP should be added to the established process, not treated as an isolated checkbox.
Choose an ATP horizon that covers relevant supply
ATP Horizon (Days) defines the number of calendar days from the current business date within which Acumatica searches for supply and demand transactions. The system excludes transactions dated beyond the horizon. The Order Types reference states that the default is 90 days when Cumulative with Look-Ahead is selected.
The default is a starting point, not a universal answer. A horizon should be long enough to include supply that the company genuinely uses for promises and short enough to avoid false precision.
A distributor that replenishes domestic stock weekly may not need to consider documents six months out. An importer with ocean freight and seasonal buys may need a longer period. A service-parts business may receive supply sporadically and prefer a conservative horizon because distant purchase dates are less reliable.
Evaluate the horizon with transaction evidence:
- Measure actual supplier lead-time distribution by item family or vendor.
- Identify how far ahead customers normally request delivery.
- Review the date quality of purchase orders, transfers, and returns at different ages.
- Test whether a longer horizon merely finds uncertain supply instead of improving commitment quality.
- Define what users should say when ATP is blank because the quantity cannot be covered within the horizon.
A blank ATP Date does not necessarily mean the item can never be supplied. The Sales Orders reference says the field is empty when the quantity cannot be covered within the ATP horizon. The distinction should be explicit in training. The correct next step may be to review purchasing, alternate warehouses, substitutions, transfers, or a manual customer negotiation rather than extending the horizon to make a date appear.
Do not change the horizon casually after go-live. A longer horizon can make more orders appear coverable, while a shorter horizon can remove dates that users previously saw. Treat a horizon change as a policy change and rerun the approved scenarios.
Decide whether ATP should protect safety stock
Order Types includes Include Safety Stock in ATP Calculation. When selected, Acumatica subtracts the safety-stock quantity from the available quantity before calculating ATP so the calculation does not promise inventory below that level. The setting is cleared by default.
The choice is operational. Safety stock may exist to protect service levels during demand variability, supplier delay, or other uncertainty. If ATP ignores it, the promise calculation can consume the buffer in its mathematical coverage. If ATP protects it, an order may receive a later date even though physical units appear to be present.
Neither choice is inherently correct for every order type. Some companies treat safety stock as a firm floor. Others permit selected customer orders to use it with approval. A single checkbox cannot model an informal exception policy by itself.
Use these questions to decide:
- Is safety stock maintained accurately by item and warehouse?
- Does the current process already protect it during allocation and shipment?
- Can sales override the buffer, and if so, who approves the exception?
- Are strategic customers handled through a separate order type or workflow?
- Will users understand why ATP is later than the current physical quantity suggests?
- How often is the buffer recalculated, and what evidence supports the quantity?
Test both states with the same documents. For example, begin with 25 units available for shipping, safety stock of 10, and a request for 20. With safety stock excluded from the promise calculation, current supply may cover the request. With safety stock protected, only 15 units are promiseable at that point, so ATP should move to a later supply event or remain blank within the horizon.
The test demonstrates why the policy belongs in training and customer-service scripts. The system is not “wrong” when it gives different dates under the two settings. It is applying two different promise policies.
Understand the dates used on a sales order
ATP depends on dates, but sales orders contain several date concepts. Users should know which one they are viewing and who owns its accuracy.
Requested On is when the customer wants to receive the item. The line can have its own requested date, particularly when the order-level shipping rule allows back orders. This is a customer requirement, not proof that supply exists.
Ship On is when the item should be shipped. Acumatica normally derives it from Requested On minus the lead days. If that result is earlier than the current business date, the current date is used. The line's Ship On date can be editable when Back Order Allowed applies.
ATP Date on the line is the earliest date on which the full open quantity can be covered under the configured calculation. The calculation dialog also shows Lead Time (Days). When the order type requires shipment, Acumatica adds lead time to the date on which the quantity can be covered to determine the ATP date.
ATP Date on the Shipping tab is the date on which the sales order can be shipped in full after order-level calculation. It is not necessarily the same as the earliest line date because the order cannot ship in full until its limiting line is ready.
Supply and demand dates come from the documents included by the ATP rule. A purchase order line's expected date, a transfer's date, a sales order's demand date, or a return's date can move the running balance. These dates must be maintained by their process owners.
Use a date dictionary in the rollout documentation. List the source field, business meaning, owner, update trigger, and whether it influences ATP. This small artifact prevents a recurring misunderstanding: users may read an ATP result as a requested delivery date, or may update Requested On without realizing that the calculation relies on different supply dates.
How the cumulative look-ahead calculation works
The line-level Available-to-Promise Calculation dialog gives the clearest explanation of the method. Acumatica shows the item's warehouse context, quantity to promise, on-hand quantity, available-for-shipping quantity, safety stock, lead time, requested date, and calculated ATP date. Beneath the summary, it lists the supply and demand documents used in the calculation.
Each timeline row has:
- the date on which the document is expected to increase or decrease availability;
- the document type;
- a reference number linked to the source document;
- a positive quantity for supply or a negative quantity for demand; and
- the running Available-to-Promise quantity as of that row.
The running balance begins with the available quantity at the start of the ATP horizon. Acumatica then adds each document quantity in chronological order. The quantity to promise is evaluated against this progression. The candidate date is the earliest point at which the applicable balance can cover the full quantity, subject to safety stock and other settings.
This method is called cumulative because earlier supply and demand affect later availability. It uses look-ahead because supply after the requested date can still produce a future ATP result. That does not mean the customer request is met. It means the system has found the earliest later point, within the horizon, at which the full quantity can be covered under the rule.
The calculation is deterministic with respect to its inputs, but the inputs change. A newly entered order, rescheduled purchase, canceled transfer, partial receipt, return, allocation, or warehouse change can alter the result. Users should recalculate before communicating a date when material documents have changed.
Do not create an external simplified formula and assume it will reproduce every tenant result. The selected plan types, statuses, features, warehouse rules, safety stock, and line eligibility all matter. Use the calculation dialog as the primary reconciliation surface because it shows the actual documents Acumatica used.
How line-level and order-level ATP differ
The Details tab provides a Calculate ATP action for one selected line. The result can be reviewed in the calculation dialog before it is saved to the line. Users can also change the warehouse or quantity to promise in the dialog; when saved, those changes update the line along with the ATP date.
The More menu provides Calculate ATP Date for the entire order. Acumatica evaluates all eligible lines, inserts their line dates, and calculates the date on which the order can ship in full. The order-level ATP Date appears on the Shipping tab.
The distinction matters when an order has several items:
- Line A may be coverable today.
- Line B may depend on a purchase receipt next Friday.
- Line C may be coverable in another warehouse on Wednesday.
- The complete order date must reflect the set of eligible lines and the chosen fulfillment behavior.
If a customer accepts split shipments, line dates may guide a staged commitment. If the customer requires Ship Complete, the latest constraining line controls the meaningful complete-order promise. The order-level calculation provides a shared reference, but the shipping rule and customer agreement still determine how operations should act.
Line-level review is also useful for diagnostics. A user can change the warehouse or test a smaller quantity without editing several order fields blindly. The dialog should not become an undocumented override mechanism. If warehouse or quantity changes affect the commercial agreement, require the same approval and audit controls used for ordinary order changes.
Worked ATP example with supply demand and safety stock
The following example illustrates the logic without claiming to reproduce every tenant's plan configuration. It assumes one stock item, one warehouse, a 30-day horizon, an ATP rule that includes the listed documents, and zero delivery lead time unless stated otherwise.
Scenario setup
The customer wants 40 units of item A100. The selected warehouse is MAIN.
- Available for Shipping at the start of the horizon: 20 units
- Safety stock: 5 units
- 23 October: existing open sales-order demand of 8 units
- 24 October: purchase-order supply of 25 units
- 25 October: transfer-out demand of 10 units
- 28 October: purchase-order supply of 30 units
- 30 October: existing back-order demand of 12 units
The new line itself is the quantity being tested, so the example does not subtract it as a separate competing demand row.
Timeline without safety-stock protection
| Date | Event | Change | Running ATP quantity |
|---|---|---|---|
| Start | Available for Shipping | +20 | 20 |
| 23 Oct | Existing sales demand | -8 | 12 |
| 24 Oct | Purchase supply | +25 | 37 |
| 25 Oct | Transfer-out demand | -10 | 27 |
| 28 Oct | Purchase supply | +30 | 57 |
| 30 Oct | Existing back-order demand | -12 | 45 |
The running quantity first reaches 40 on 28 October. It remains above 40 after the 30 October demand, so 28 October is the candidate coverage date in this simplified timeline.
Timeline with safety-stock protection
If the order type protects 5 units of safety stock, begin from an effective promiseable quantity of 15 rather than 20.
| Date | Event | Change | Running ATP quantity after safety stock |
|---|---|---|---|
| Start | Available for Shipping less safety stock | +15 | 15 |
| 23 Oct | Existing sales demand | -8 | 7 |
| 24 Oct | Purchase supply | +25 | 32 |
| 25 Oct | Transfer-out demand | -10 | 22 |
| 28 Oct | Purchase supply | +30 | 52 |
| 30 Oct | Existing back-order demand | -12 | 40 |
The balance reaches 40 on 28 October, but later included demand reduces it to exactly 40. Depending on how the product evaluates coverage against later dated commitments within the configured method, the calculation dialog is the authoritative result. The example's purpose is to show that safety stock changes the running balance and can change the date or eliminate coverage near the horizon boundary.
Add customer delivery lead time
Assume the stock is covered on 28 October and the customer location has two lead days. When the order type requires shipment, the documented calculation adds the lead time to determine the ATP date shown to the user. The operational interpretation should distinguish the warehouse coverage date from the customer-facing date.
Change the warehouse
Suppose warehouse EAST has 45 available-for-shipping units and no earlier included demand. The line-level dialog lets the user change the warehouse and recalculate. EAST may produce an earlier date, but that result is not a command to move the order automatically. The user must consider fulfillment cost, warehouse policy, branch access, shipping zone, customer expectation, and whether the organization uses order orchestration.
What to validate in the real system
Build the scenario with actual documents and record:
- Every document that appears in the calculation dialog.
- Every expected document that does not appear.
- The sign and date of each quantity.
- The starting available-for-shipping value.
- The safety-stock behavior.
- The coverage date before lead time.
- The saved line ATP date and order ATP date.
- The result after changing one input at a time.
This approach tests both configuration and user interpretation. A screenshot of a final date without the document timeline is not enough evidence.
How warehouse selection changes the promise
ATP is evaluated for the warehouse selected on the line. In the calculation dialog, changing the warehouse recalculates the date. This is useful when the company can fulfill from multiple sites, but it makes warehouse data part of the promise.
Warehouses may differ in:
- current available-for-shipping quantity;
- inbound purchase schedules;
- transfer supply and demand;
- safety-stock values;
- excluded locations;
- customer delivery lead time;
- shipping zones and carrier services;
- item-specific warehouse settings; and
- operational cutoffs or capacity not represented in ATP.
The earliest mathematical date is not always the best fulfillment choice. Shipping from a distant site may increase freight cost, split an order, complicate tax or branch handling, or consume supply reserved operationally for another region. Define when users may change the warehouse and whether approval is required.
If Order Orchestration is enabled, do not assume ATP and orchestration make the same decision. Order orchestration chooses fulfillment according to configured strategies and plans; ATP calculates coverage for the selected warehouse and quantity. Test the combined workflow using the actual order type, orchestration strategy, shipping zone, and warehouse priorities.
Unavailable warehouse locations also matter to the starting quantity. Inventory Allocation Details states that Available for Shipping excludes quantities in locations where Include in Qty. Available is cleared. Validate receiving, quarantine, inspection, damaged-goods, and staging locations so physical stock that cannot ship is not mistaken for promiseable stock.
Which sales-order lines are eligible for ATP
According to the Sales Orders reference, a line qualifies for ATP calculation only when all of these conditions are met:
- It contains a stock item.
- The item's item class has an ATP calculation rule.
- The line is not completed.
- The operation is Issue.
- The line is not configurable.
- The line does not have a related unconfirmed shipment.
The conditions explain several common cases before troubleshooting begins.
A non-stock service or charge line does not represent warehouse stock and therefore does not receive this ATP calculation. A receipt operation adds inventory rather than issuing it to the customer. A completed line no longer needs a new coverage date. A configurable item may require configuration and manufacturing logic outside the distribution ATP model. A line already tied to an unconfirmed shipment has entered a different fulfillment state.
Create a negative test for each exclusion. The goal is not to force every line to display a date. The goal is to confirm that eligible lines calculate and ineligible lines remain outside the process for the documented reason.
Mixed orders, returns, replacements, kits, drop shipments, and custom line types deserve extra attention because one document can contain different operations and fulfillment paths. Review the line, not only the order header.
How order status and unconfirmed shipments affect the action
The ATP commands are available only for sales orders in documented working statuses. The 2026 R2 Sales Orders reference lists On Hold, Awaiting Payment, Credit Hold, Open, and Back Order for the calculation actions.
These statuses cover orders that may still need a commitment decision. A canceled or completed order is outside that decision. A line with a related unconfirmed shipment is excluded because fulfillment processing has already created a shipment document whose quantities and status need to be resolved.
Users should calculate at defined checkpoints:
- During order review, after item, quantity, warehouse, requested date, and shipping information are correct.
- After credit or payment status changes when the order remained open long enough for supply and demand to move.
- After a material purchasing, transfer, or back-order update.
- Before sending a promise externally when the prior calculation is no longer recent.
- After changing the warehouse or open quantity.
Avoid a rule that says “calculate once at order creation.” ATP is a snapshot of a changing document timeline. The saved date can become stale after other transactions change. The process should define when recalculation is mandatory and how users recognize an old result.
An unconfirmed shipment requires operational review rather than an ATP workaround. Confirm, correct, or delete the shipment according to normal controls. Do not detach or alter shipment records merely to make the ATP button available.
How shipping rules and back orders interact with ATP
Shipping rules determine how an order may be fulfilled. Acumatica documents three familiar outcomes on sales orders: Ship Complete, Back Order Allowed, and Cancel Remainder. ATP does not replace these rules.
With Ship Complete, the practical commitment centers on the date when the order can ship in full. The order-level ATP date is especially relevant because the latest constraining eligible line controls the complete shipment.
With Back Order Allowed, lines can have different requested and ship dates. Line-level ATP can support staged commitments, but the business must explain each shipment and keep the remaining demand visible. Back-order demand should be included or excluded from the ATP rule according to a deliberate policy.
With Cancel Remainder, the first shipment can end the remaining obligation according to the order process. An ATP date for the full original open quantity may be less relevant if the customer accepts partial fulfillment and cancellation of the balance. The sales policy should decide whether ATP is used before that decision and how the communicated commitment is recorded.
Test partial availability explicitly. Enter an order larger than current stock, calculate ATP, create a partial shipment where allowed, confirm or leave the shipment unconfirmed, and recalculate the remaining order after the correct operational step. Observe line eligibility, open quantity, back-order status, and the updated timeline.
Back orders can consume future supply when the ATP rule deducts them. This is usually essential for fairness: a new order should not be promised against a receipt already needed for older demand. If back orders are excluded, document the reason and test the priority process that prevents overpromising.
Allocation is different from an ATP calculation
Allocation reserves or associates inventory quantities with demand according to the order and inventory process. ATP estimates the earliest date on which the full open quantity can be covered under a rule. A calculated ATP date does not, by itself, hard-allocate the stock or prevent another transaction from consuming it.
This distinction is critical in high-volume order entry. Two users can calculate similar dates close together while supply and demand continue to change. If the business requires reservation, the allocation workflow must occur and be monitored separately.
Inventory Allocation Details is the main diagnostic surface for current availability and item plans. It shows on-hand, available, available-for-shipping, additions, deductions, and the source documents behind them. The ATP dialog provides the time-phased subset used for the promise calculation. Use both when a user reports that the promise date conflicts with the apparent inventory position.
Training should use precise verbs:
- “Calculate ATP” means determine an earliest coverage date.
- “Save ATP” means write the reviewed result to the line, and possibly save changed warehouse or quantity values from the dialog.
- “Allocate” means reserve or designate inventory through the applicable sales-order process.
- “Create shipment” moves the order into warehouse fulfillment.
- “Confirm shipment” records the completed shipment step according to the configured workflow.
Biz-Tech's guide to PDF order automation and inventory allocation explains a similar boundary: automation can create clean sales-order demand, while Acumatica still controls allocation, back orders, transfers, and shipment behavior. ATP adds a date calculation to that controlled process; it does not erase the boundary.
Purchase orders transfers and replenishment in the ATP timeline
Future supply can make ATP valuable, but only when the underlying documents are credible.
Purchase orders. If the ATP rule includes open purchase orders, their quantities and expected dates can increase the running balance. Review approval status, vendor confirmation, partial receipts, overdue lines, and date-maintenance discipline. An open purchase order is not the same as a confirmed delivery.
Purchase receipts. Unreleased receipts may represent goods that have arrived but are not yet available under the ordinary inventory process. Test whether the selected plan category belongs in the ATP rule and whether inspection or quality holds create additional constraints.
Transfers. Transfer supply and demand should be paired by warehouse and date. A transfer into MAIN is potential supply for MAIN and demand against the source warehouse. Late transfer processing can make one warehouse appear short while another appears to have supply in motion.
Replenishment. A recommendation or planning exception is not necessarily an executable supply document. ATP uses the plan types included in the rule. Confirm which planning outputs become purchase orders, transfers, or other documents before counting them.
Purchase-to-order and drop shipment. Sales lines linked to purchasing follow specific fulfillment relationships. Test linked quantities, partial documents, vendor dates, and receipt or direct-ship behavior. Do not assume the general warehouse ATP date is the appropriate customer commitment for a drop shipment without validating the documented flow.
Build an exception report for inbound supply used by ATP. Useful conditions include promised dates in the past, lines with no promised date, partially received orders, transfers not released, purchase orders on hold, and vendors whose actual receipts frequently miss recorded dates. ATP quality depends on the owners correcting those records.
Special cases that need separate testing
Some inventory and order patterns cannot be covered safely by one ordinary stocked-item scenario.
Kits
Stock kits and non-stock kits can depend on component availability, kit assembly, disassembly, or customized processing. The ATP line may represent the kit item while operational feasibility depends on components. Test the actual kit configuration and the plan types included in the ATP rule. The Biz-Tech kit component inventory guide explains why On Hand, Available, Available for Shipping, component demand, purchase supply, and assembly documents must be distinguished.
Lot and serial tracking
A total quantity can appear sufficient while the usable lots do not meet expiration, assignment, customer, project, or quality requirements. Inventory Allocation Details can exclude expired quantities and locations not included in availability, but the business should test its lot and serial workflow through allocation and shipment.
Configurable items
The documented sales-order ATP calculation excludes configurable lines. Use the applicable configuration and manufacturing process. Do not present a missing ATP date as a defect when the line is outside the feature's eligibility.
Project-specific inventory
Project inventory can restrict which quantity belongs to a customer or project. Test project and task dimensions, warehouse locations, allocations, and item plans. A company-wide quantity may not be available to the specific order.
Returns
An expected return is uncertain until the goods arrive and their condition is known. If the ATP rule includes sales returns, define when a return can be counted and whether inspection or disposition delays the item becoming ship-ready.
Expired or quarantined stock
The warehouse can physically contain units that should not be promised. Confirm location availability settings, lot expiration behavior, quality controls, and the starting Available for Shipping quantity.
Units of measure
ATP evaluates quantities in a system that may use different sales, purchase, and base units. Test conversion factors, rounding, divisible-unit settings, pack sizes, and vendor quantities. A conversion error can move the date even when document counts look reasonable.
Customizations and integrations
Custom code may set warehouse, requested date, order type, operation, status, plan type, or quantity. Review customizations that extend SO301000, IN201500, IN201000, purchase processing, transfer processing, or integrations. Retest after every upgrade or customization change.
ATP behavior for imported and integrated sales orders
Imported orders use the same Acumatica order configuration after they are created. The source system does not bypass the need for a correct Acumatica item, warehouse, order type, quantity, unit of measure, requested date, operation, and status.
This point matters because integrations often apply defaults:
- A connector may choose one order type for all incoming orders.
- A store configuration may assign a default warehouse.
- A cross-reference may translate an external SKU or warehouse into Acumatica values.
- An import scenario may place orders on hold.
- EDI or commerce data may omit a requested delivery date or use a different date definition.
- A customization may create allocations, purchase links, or shipments soon after import.
Each default can affect ATP eligibility or the resulting timeline. A wrong warehouse can produce a valid date for the wrong supply pool. A wrong item can inherit a different ATP rule. A direct-to-invoice flow may not follow the sales-order process expected by customer service. An automatically created unconfirmed shipment can make the line ineligible for calculation.
Review the integration mapping as part of the ATP design. The Biz-Tech WooCommerce data-flow guide shows how a connector can set the destination document type, order type, and warehouse. The Salesforce inventory-allocation guide reinforces that imported demand affects inventory through the Acumatica sales order that is created, while allocation rules remain in Acumatica.
Create end-to-end tests for each order source:
- Import a known item and quantity.
- Confirm the resulting order type, warehouse, UOM, requested date, status, and line operation.
- Calculate ATP and capture the document timeline.
- Compare the result with a manually entered order using identical values.
- Change one mapping, such as warehouse, and confirm the expected change.
- Continue through allocation, shipment, confirmation, and invoice processing.
- Verify what date, if any, is returned to the external channel.
Do not automatically publish the ATP date to a marketplace, portal, CRM, or EDI acknowledgment without a separate interface design. Define the outbound field, timezone, date semantics, recalculation trigger, error handling, and what happens when the date is blank or later changes.
Data quality controls before implementation
ATP can expose weak data because it asks the system to connect many ordinary transactions on a timeline. Improve the data before judging the feature.
Item master data
Confirm that each in-scope stock item has the correct item class, base and sales UOMs, default warehouse, item-warehouse settings, safety stock, lead times, lot or serial settings, and active status. Identify duplicate or obsolete items that should not receive customer demand.
Warehouse and location data
Review warehouse access, defaulting, customer shipping zones, item availability by warehouse, and location flags. Quarantine, damaged, inspection, returns, staging, and consignment locations should reflect whether their stock is eligible for availability and shipping.
Supply dates
Measure overdue and missing promised dates on purchase orders and transfers. Ask buyers and warehouse planners how dates are updated after vendor acknowledgments, partial receipts, or delays. A daily ATP process needs a daily date-maintenance habit.
Demand status discipline
Review how long sales orders remain on hold, credit hold, open, or back order. Remove canceled or abandoned demand through the proper workflow. Decide which statuses the ATP rule treats as real demand.
Document quantities
Look for unusual UOM conversions, negative quantities, partially completed lines, incorrect open quantities, and duplicate integration records. Reconcile linked purchase-to-order and transfer documents.
Customer lead-time inputs
Confirm that the delivery lead time used in the result corresponds to the customer location and shipping process. Carrier transit time, warehouse cutoff, weekends, holidays, and route schedules may need operational controls beyond the base ATP calculation.
Ownership
Assign each data category to a role. Sales owns customer request details; purchasing owns expected vendor dates; inventory control owns location and quantity accuracy; warehouse operations owns shipment state; the ERP team owns configuration; process leadership owns exception policy.
Use measurable entry criteria for the pilot. Examples include no missing ATP rule on pilot item classes, no overdue inbound document without a reviewed date, no unexplained negative Available for Shipping quantity, and signed expected results for representative scenarios.
A practical ATP test plan
A reliable test plan combines configuration coverage, business scenarios, negative cases, and reconciliation. Use a recent copy of production data where permitted, because synthetic master data often misses real item-class, warehouse, and document variation.
Establish the baseline
Before enabling ATP, record the current promise process. Identify which fields users read, which spreadsheets or inquiries they consult, who approves an exception, and how late promises are tracked. This baseline will show whether ATP reduces ambiguity or simply adds another date.
Build a scenario matrix
Test at least the following:
| Scenario | Expected focus |
|---|---|
| Current stock covers full quantity | ATP should reflect immediate coverage plus applicable lead time |
| Current stock covers part only | Future supply should determine the earliest full-coverage date |
| No supply inside horizon | ATP Date should remain blank |
| Supply exists just outside horizon | Confirms horizon exclusion |
| Safety stock selected | Buffer reduces the promiseable balance |
| Safety stock cleared | Same documents produce the alternate policy result |
| Competing open order | Included demand should consume supply |
| Back order | Rule should treat older demand according to policy |
| Purchase order on hold | Confirms whether prepared supply is included |
| Partial purchase receipt | Remaining and received quantities reconcile |
| Transfer into target warehouse | Supply appears in the correct warehouse and date |
| Transfer out of target warehouse | Demand reduces that warehouse's timeline |
| Alternate warehouse | Recalculation reflects the alternate supply pool |
| Non-stock item | Line remains ineligible |
| Configurable item | Line remains ineligible |
| Unconfirmed shipment | Line remains ineligible until normal shipment processing resolves it |
| Imported order | Defaults and mappings match the manual control order |
| Multi-line Ship Complete order | Order ATP reflects the limiting line |
| Back Order Allowed | Line dates support the documented staged process |
Change one variable at a time
Begin with a known document set. Calculate and capture the result. Then change one input: a PO date, quantity, warehouse, safety-stock setting, horizon, demand status, or rule checkbox. Recalculate and explain the difference. Multiple simultaneous changes make a failed expectation difficult to diagnose.
Verify both line and order calculations
Test Calculate ATP on a selected line and Calculate ATP Date for the order. Confirm saved values in the line and Shipping tab. Use orders with one line and several lines.
Test user roles
Run scenarios under the actual sales, customer-service, purchasing, warehouse, and administrator roles. Confirm that users can see the necessary source documents without receiving unnecessary access. A calculation result that links to documents the user cannot inspect needs an escalation path.
Test concurrency and change
Have one user calculate while another updates an included supply document in a controlled test. Recalculate and confirm the changed result. The purpose is to teach that ATP is time-sensitive, not to prove that a saved date is permanently reserved.
Record evidence
For each scenario retain the configuration version, build number, user role, starting values, source documents, screenshots of the timeline, expected result, actual result, and reviewer decision. This evidence supports training and future regression tests.
Reconcile an ATP date to its source documents
Reconciliation should be a standard response to a questioned ATP date. Avoid debating the final date before reviewing the timeline.
- Open the sales order and confirm its status, type, warehouse, item, quantity, operation, requested date, open quantity, and shipment state.
- Confirm that the Available-to-Promise feature is enabled.
- Open the order type and record ATP Calculation, ATP Horizon, and the safety-stock setting.
- Open the item's item class and record the assigned ATP Calculation Rule.
- Open the rule and record every selected supply and demand category.
- Open Inventory Allocation Details for the item and warehouse. Reconcile On Hand, Available, Available for Shipping, locations, and item plans.
- Open the line-level ATP dialog and export or transcribe the dated document rows.
- Follow each reference number to its source document. Confirm date, status, warehouse, open quantity, and link relationships.
- Rebuild the running balance in a simple worksheet.
- Confirm safety-stock and lead-time effects.
- Recalculate after correcting any source document through its normal workflow.
Do not edit a transaction merely to force the expected answer. If the calculation uses an unwanted document, determine whether the document is wrong, its status is wrong, its date is stale, or the rule includes a plan category the business does not trust.
The dialog's source links are an important control. They turn ATP from an opaque date into an auditable chain. Save that evidence when resolving a customer-impacting exception.
If a customization or build-specific issue is suspected, create the smallest reproducible scenario. Include exact build, enabled features, order type, rule settings, item class, document data, user role, and steps. Compare the result in a clean environment when practical before escalating.
Design permissions ownership and exception handling
ATP crosses functional boundaries, so ownership must be explicit.
ERP administrator. Enables the feature, controls configuration changes, documents versions, and coordinates regression testing.
Distribution functional owner. Approves the ATP rule, horizon, safety-stock policy, order-type scope, and operational interpretation.
Sales and customer service. Enters accurate order data, calculates at defined checkpoints, communicates approved dates, and escalates exceptions.
Purchasing. Maintains credible inbound dates and resolves supplier changes that affect promises.
Inventory and warehouse teams. Maintain quantity accuracy, location availability, transfers, allocations, shipment status, and exception stock.
Integration owner. Validates order defaults and controls any outbound use of the ATP date.
Finance or commercial leadership. Defines which customers, order values, or margin conditions require approval before a later date, split shipment, expedited freight, or safety-stock exception is accepted.
Separate permissions for calculation, transaction editing, and configuration. A sales user may need to calculate and inspect the timeline without being allowed to edit ATP rules or purchase dates. A buyer may maintain purchase dates without changing the order's commercial terms.
Define exception categories:
- blank date within the horizon;
- date later than the customer request;
- source document with uncertain or overdue supply;
- safety-stock override request;
- alternate-warehouse request;
- split-shipment request;
- expedited purchase or freight request;
- strategic-customer prioritization;
- result that conflicts with a physical or supplier reality.
For each category, name the decision owner, required evidence, response time, allowed changes, and where the decision is recorded. ATP should make exceptions visible, not move them into private messages.
Roll out ATP without disrupting order entry
Use a controlled sequence instead of enabling every order type and item class at once.
Phase 1: policy and design
Map the current promise process. Approve rule categories, horizon, safety stock, order types, item scope, roles, and exception handling. Identify integrations and customizations.
Phase 2: configuration prototype
Enable ATP in a sandbox. Create one ATP rule for a coherent item family, assign it to a pilot item class, and configure one order type. Use a small set of representative warehouses and customers.
Phase 3: data cleanup
Correct stale dates, class assignments, warehouse defaults, location flags, UOMs, safety stock, back orders, and incomplete supply documents for the pilot scope.
Phase 4: scenario testing
Execute the approved matrix and reconcile every result. Include integrations, permissions, negative cases, and multi-line orders.
Phase 5: user pilot
Select a small sales and customer-service group. Ask them to use ATP alongside the existing promise process without changing external commitments automatically. Collect discrepancies and classify their causes.
Phase 6: operational integration
Update procedures, customer communication templates, approvals, reports, dashboards, and any intended outbound interfaces. Train purchasing and warehouse users on how their dates and statuses influence promises.
Phase 7: production release
Deploy the signed configuration through the organization's change process. Verify it in production with non-disruptive test orders or carefully selected real orders. Confirm the exact build and enabled feature state.
Phase 8: expansion
Add item classes, order types, warehouses, and integrations only after the pilot metrics are stable. Reuse regression tests and document rule differences.
The rollout should include an explicit stop condition. Pause expansion if users cannot reconcile dates, overdue inbound records remain common, the integration publishes unreviewed dates, or late commitments increase.
The broader Acumatica 2026 R2 Upgrade Guide provides a framework for sandbox testing, customizations, integrations, training, and cutover. ATP should follow the same controlled upgrade discipline.
Monitor promise quality after go-live
The goal is not to maximize the number of orders with an ATP date. The goal is to improve the reliability and explainability of customer commitments.
Track measures that connect the calculation to outcomes:
Promise adherence
Compare the communicated promise date with the actual shipment or delivery result. Segment by item class, warehouse, vendor-dependent supply, order type, and customer.
ATP date stability
Measure how often the saved date changes before shipment and the size of the change. Frequent movement may indicate stale supply dates, volatile demand, weak allocation, or a horizon that reaches too far.
Requested-date gap
Measure the difference between Requested On and ATP Date. This identifies item families and warehouses where demand regularly exceeds the planned supply position.
Blank ATP rate
Track eligible lines that remain uncovered within the horizon. Do not treat zero as the target. A blank result can be an honest signal. Investigate clusters by item, vendor, warehouse, or rule.
Manual override rate
Record warehouse, quantity, date, or safety-stock exceptions. High volume may mean the policy does not match real operations or users are bypassing it.
Source-document quality
Monitor overdue purchase lines, missing promised dates, late transfers, unconfirmed shipments, old back orders, and abandoned on-hold sales orders.
Customer-service handling time
Measure the time needed to answer a date inquiry and the number of handoffs. A transparent calculation may reduce manual investigation even before on-time performance changes.
Review results weekly during the pilot and monthly after stabilization. Separate configuration errors, data errors, process exceptions, and supplier or warehouse execution problems. ATP cannot solve every cause, but it can make the causal chain easier to inspect.
Common ATP pitfalls and how to diagnose them
Calculate ATP is missing
Check the feature, order type's ATP Calculation setting, order status, item class rule, line operation, completed state, configurable status, and related unconfirmed shipment. Follow the four-layer configuration chain.
ATP Date is blank
Confirm that the quantity cannot be covered within the horizon. Review the timeline for missing or excluded supply, competing demand, safety stock, wrong warehouse, and dates beyond the horizon. A blank field can be the correct answer.
The date is much later than expected
Look for included demand before the anticipated supply, protected safety stock, lead time, back orders, transfer demand, overdue supply moved to a later date, or an item in the wrong class.
The date is earlier than operations believe
Investigate optimistic purchase dates, on-hold supply counted as credible, missing demand categories, stale canceled or duplicated data, returns counted before inspection, wrong UOM conversion, and stock in an operational state not represented by the rule.
On Hand is high but ATP is late
Reconcile Available for Shipping. The stock may already be allocated, shipped, located in an excluded location, expired, reserved for another purpose, or protected as safety stock.
Available for Shipping is low but future supply exists
Current ship-ready quantity and future promise are different. Confirm that the future document type is included, dated within the horizon, assigned to the same warehouse, and in an eligible status.
A purchase order does not appear
Check the rule's purchase categories, PO status, warehouse, item, UOM, open quantity, date, link type, and whether the transaction is beyond the horizon.
An old sales order consumes supply
Confirm whether its status and plan category are included. Resolve the order through the proper cancel, complete, close, or back-order process. Do not exclude valid demand merely to improve dates.
Alternate warehouse gives an attractive date that cannot be used
Review warehouse access, branch and shipping policy, customer lead time, freight, carrier service, tax implications, order orchestration, item restrictions, and operational capacity.
Imported orders calculate differently from manual orders
Compare order type, warehouse, status, UOM, requested date, operation, item mapping, quantity, and any automatic shipment or purchase link. Build a paired control test.
Users treat ATP as a reservation
Correct the procedure and training. Add an allocation checkpoint and a warning in the work instruction. Track cases where calculated dates change because inventory was not allocated.
Users extend the horizon until a date appears
Return to the data and policy. A farther date is not more reliable merely because the system can see it. Require approval for horizon changes and evaluate inbound-date accuracy.
Safety stock is bypassed informally
Choose a governed exception path. Consider a separate order type only if it matches the business process and is tested. Do not encourage users to change item master data temporarily.
The order date and line dates disagree
Review all eligible lines and the shipping rule. The order-level date reflects when the full order can ship, while individual lines can be ready earlier.
The result changed after a patch or upgrade
Run the saved regression scenarios. Compare build numbers, enabled features, rules, item classes, order types, customizations, plan types, and source documents. Reopen the current Acumatica documentation before escalating.
Available-to-Promise implementation checklist
Scope and policy
- [ ] Name the ATP business owner and technical owner.
- [ ] Define which customers, item families, warehouses, and order types are in scope.
- [ ] Decide whether safety stock is protected.
- [ ] Approve the ATP horizon using lead-time and date-quality evidence.
- [ ] Define how blank, late, or changing dates are handled.
- [ ] Define when a calculated date may be communicated externally.
Configuration
- [ ] Enable Available-to-Promise in a sandbox.
- [ ] Create ATP-type calculation rules.
- [ ] Document every included supply and demand category.
- [ ] Assign ATP rules to the correct item classes.
- [ ] Set order types to Cumulative with Look-Ahead where appropriate.
- [ ] Record horizon and safety-stock settings for each order type.
- [ ] Review custom order types and automation behaviors.
Master data and transactions
- [ ] Validate item class, stock status, UOMs, and warehouse defaults.
- [ ] Validate item-warehouse safety stock and lead-time inputs.
- [ ] Review warehouse-location availability flags.
- [ ] Correct overdue or missing purchase and transfer dates.
- [ ] Resolve abandoned on-hold orders and invalid back orders.
- [ ] Reconcile linked purchase-to-order, drop-ship, kit, and transfer documents.
Testing
- [ ] Test current stock, future supply, competing demand, and no-supply cases.
- [ ] Test the horizon boundary and both safety-stock settings.
- [ ] Test line-level and order-level calculations.
- [ ] Test alternate warehouses and multi-line orders.
- [ ] Test shipping rules and partial fulfillment.
- [ ] Test every documented line exclusion.
- [ ] Test all user roles.
- [ ] Test each integration source against a manual control order.
- [ ] Reconcile results to the calculation dialog and source documents.
- [ ] Save evidence for future regression testing.
Rollout and operations
- [ ] Train sales, customer service, purchasing, and warehouse teams.
- [ ] Separate ATP calculation from allocation and shipment steps.
- [ ] Define recalculation checkpoints.
- [ ] Define exception ownership and approval evidence.
- [ ] Verify reports, dashboards, and integrations that use the date.
- [ ] Monitor promise adherence, date changes, blanks, and overrides.
- [ ] Review supplier and warehouse data quality regularly.
- [ ] Revalidate after patches, upgrades, or configuration changes.
Frequently Asked Questions
What is Available-to-Promise in Acumatica 2026 R2?
Available-to-Promise, or ATP, is a Distribution feature that calculates the earliest date on which the full open quantity of an eligible sales-order line can be covered in a selected warehouse. It can also calculate the date on which the complete order can ship in full. The result is based on a configured timeline of supply and demand within an ATP horizon.
Does ATP reserve inventory for the customer?
No. ATP calculates a date; it does not replace inventory allocation or shipment processing. If the business needs stock reserved, users must follow the applicable allocation workflow. A saved ATP date can change when other supply and demand documents change.
Why is Calculate ATP not visible on a sales order?
Confirm that the Available-to-Promise feature is enabled, the order type uses Cumulative with Look-Ahead, the order has an eligible status, and the line contains an eligible stock item whose item class has an ATP rule. The line must use the Issue operation, remain incomplete, not be configurable, and have no related unconfirmed shipment.
Why is the ATP Date blank?
The requested quantity may not be coverable within the configured ATP horizon. Review the line-level calculation, warehouse, quantity, safety stock, included supply and demand categories, document dates, and competing demand. A blank date can be a correct warning rather than a configuration error.
What is the difference between Available for Shipping and Available to Promise?
Available for Shipping is a current quantity after defined operational deductions, including shipped and allocated quantities and inventory in excluded locations. Available to Promise is a future date calculation. It processes configured supply and demand chronologically to find when the full quantity can be covered.
How does safety stock affect ATP?
When Include Safety Stock in ATP Calculation is selected for the order type, Acumatica subtracts safety stock from the available quantity before calculating the date. This protects the buffer from being promised through the ATP calculation and may move the result later or leave it blank inside the horizon.
What does the ATP horizon control?
The horizon is the number of calendar days from the current business date in which Acumatica searches for supply and demand transactions. Documents beyond the horizon are excluded. The Order Types form defaults the value to 90 days, but the organization should choose a horizon that matches credible lead times and date quality.
Can users calculate ATP for another warehouse?
Yes. The line-level calculation dialog lets a user change the warehouse and recalculate. Saving the dialog also updates the line's warehouse if it was changed. The organization should govern this choice because freight, branch, customer, tax, orchestration, and operational rules may make the earliest warehouse date unsuitable.
Does ATP work for configurable or non-stock items?
The documented sales-order ATP calculation applies to qualifying stock-item lines and excludes configurable lines. Non-stock items do not receive the inventory coverage calculation. Manufacturing organizations should evaluate the applicable Capable-to-Promise workflow for produced items where resource capacity matters.
Which documents are included in ATP?
The ATP calculation rule controls the plan categories. Depending on enabled features and selected checkboxes, the rule can include or deduct sales orders, back orders, allocations, issues, purchase orders, receipts, transfers, returns, kit documents, service demand, production supply and demand, and project-material plans. Review the actual rule and calculation dialog rather than assuming a fixed universal list.
How often should ATP be recalculated?
Recalculate after material changes to quantity, warehouse, order status, requested date, purchase or transfer timing, allocation, or other included supply and demand. At minimum, calculate during order review and again before communicating a customer commitment when the earlier result may be stale.
Can ATP dates be sent to an e-commerce or EDI system?
They can be integrated only through an intentional interface design. Define the outbound field, date meaning, timezone, recalculation trigger, blank-date handling, change notifications, error behavior, and approval policy. Do not assume that enabling ATP automatically publishes its result to an external channel.
Sources
- Acumatica 2026 R2 release announcement
- Acumatica release news and 2026 R2 overview
- Introducing Acumatica Cloud ERP 2026 R2
- Sales Orders SO301000 form reference for 2026 R2
- Order Types SO201000 form reference for 2026 R2
- Item Classes IN201000 form reference for 2026 R2
- Enable or Disable Features CS100000 form reference for 2026 R2
- Availability Calculation Rules IN201500 form reference for 2026 R2
- Inventory Allocation Details IN402000 form reference for 2026 R2
- Capable-to-Promise general information
- Biz-Tech Acumatica Distribution ERP guide
- Biz-Tech guide to PDF order automation and inventory allocation
Available-to-Promise can improve order-date decisions when the calculation rule, item classes, order types, warehouses, safety stock, and document dates reflect real operating policy. The next practical step is to choose one item family and one order type, reproduce a small set of supply-and-demand scenarios in a sandbox, and reconcile every date before expanding the rollout. Biz-Tech Services can help with Acumatica 2026 R2 configuration, integration review, test design, and distribution-process optimization through the Biz-Tech support and consultation page.
How to Map ShipHero SKUs to Acumatica Inventory Items
Mapping ShipHero SKUs to Acumatica inventory items requires a careful reading of what the connector documentation actually defines. The manual documents bidirectional item synchronization, missing-item creation or replacement, item-class defaults, and warehouse cross-references, but it does not name a ShipHero SKU field or state the exact comparison rule that links an SKU to an existing Inventory ID.
The Biz-Tech Services ShipHero Acumatica Connector provides the controls needed to load and synchronize items and to decide what happens when a record is missing. This guide focuses on those documented item-level controls and marks the unsupported areas clearly.
What ShipHero Item Mapping in Acumatica Establishes
The Biz-Tech Services Acumatica ShipHero Connector uses the Inventory Details tab to load and display items from both systems. Load Acumatica Items displays the ERP items, Load Ship Hero Items displays the warehouse management system items, Sync Acumatica Items exports items to ShipHero, and Sync Ship Hero Items imports items into Acumatica.
When an imported ShipHero item does not exist in Acumatica, Import Item controls whether a new inventory record may be created. When that checkbox is selected, imported item type, item class, UOM, and warehouse ID become available as defaults. When it is not selected, the source says the connector does not create a new item and uses the configured Replace Missing Products default instead.
Warehouse Cross-Reference is part of the item synchronization path, but it maps warehouse values rather than item identifiers. The source says the connector creates or assigns the warehouse for an imported item according to this setup. It does not say that Warehouse Cross-Reference maps an SKU, Inventory ID, alias, or product code.
ShipHero Item Mapping at a Glance
Use this sequence to configure the documented item behavior without assuming an undocumented SKU rule.
1 Select the integration direction on Ship Hero Store because the available tabs and processing behavior change between Ship Hero to Acumatica and Acumatica to Ship Hero.
2 Configure Warehouse Cross-Reference for the warehouse values used during item synchronization and order import.
3 On Sync Info, decide whether Import Item should create a missing Acumatica item or whether the connector should use Replace Missing Products.
4 If Import Item is selected, set imported item type, item class, UOM, and warehouse ID as the defaults for a newly created item.
5 Open Inventory Details and use Load Ship Hero Items or Load Acumatica Items to review the records available for processing.
6 Run Sync Ship Hero Items to import selected ShipHero items or Sync Acumatica Items to export ERP items.
7 Open the Ship Hero Item inquiry to review item availability, connected vendors, bin transfers, and the result of Sync Ship Hero Item.
8 Treat the SKU, alias, duplicate, and precedence rules as unresolved until Biz-Tech Services supplies product-specific guidance because the manual does not define them.
Choose the Item Synchronization Direction
Ship Hero Store includes an Integration Option that determines the workflow direction. Ship Hero to Acumatica brings data from the warehouse management system into the ERP and exposes General Info, Import Info, Ship Via Cross Reference, Warehouse Cross Reference, Inventory Details, Sync Info, and Locations.
The Inventory Details actions show the documented item flow. Load Acumatica Items retrieves the ERP item list, and Load Ship Hero Items retrieves the ShipHero item list. Sync Acumatica Items sends ERP items to ShipHero. Sync Ship Hero Items brings ShipHero items into Acumatica. Purge deletes the items displayed on the Inventory Details table, while Sellect All, as written in the source, selects all displayed items.
The manual does not list Inventory Details grid columns or identify an SKU, product ID, inventory code, or line-level key on that tab. It also does not explain whether synchronization updates an existing record or creates a new one based on an SKU comparison. Confirm the visible fields in the installed customization before documenting a local matching procedure.
Configure Missing Item Creation and Item Class Defaults
Import Item is the documented switch for missing inventory records. Select it when the connector should allow a new item to be created during synchronization or order import. The following default fields then appear: imported item type, item class, UOM, and warehouse ID.
Item class is used as a default for new item creation. The source does not describe item class as a cross-reference, a match condition, or a way to resolve multiple records with the same external identifier. It also does not state whether any attributes or settings inherited from the class are required by the connector.
When Import Item is not selected, the manual says that the connector does not create a new item and sets a default item for each missing product. Replace Missing Products supplies that default item, and Warehouse ID supplies the warehouse value. The source also contains an awkward sentence saying it sets Replace Missing Products as the item name; it does not clarify whether this means the selected replacement item, the displayed line description, or another value.
These controls define how an unmapped or missing product can be handled during import, but they do not define the condition that makes a product missing. No rule is given for blank SKUs, unknown SKUs, duplicate SKUs, inactive items, stock versus non-stock items, or a ShipHero record whose code differs from the Acumatica Inventory ID.
Separate Warehouse Cross-References from Item Identity
Warehouse Cross-Reference is explicitly used by item synchronization and order import. Based on that setup, an imported order receives the mapped warehouse on the sales order, and an imported item receives or creates the warehouse associated with that mapping.
The Biz-Tech Services ShipHero Acumatica Integration also uses the mapped warehouses when locations are loaded. The Locations note states that locations are loaded for warehouses configured on Warehouse Cross-Reference. When Use Location Mapping is selected, a grid appears to map locations; otherwise, Sellable Location and Non-Sellable Location provide the documented defaults.
Ship Via Cross-Reference serves a different purpose. The Import Info settings expose Use Cross Ref for Ship Via and Use Cross Ref for Warehouse. Selecting these options shows the corresponding tabs so ShipHero values can be matched with Acumatica values. The manual does not provide an item cross-reference option or an SKU cross-reference tab.
Box Mapping and Reason Code Mapping are also named mapping features, but neither identifies an inventory item. Box Mapping pairs Acumatica Box ID with ShipHero Box name. Reason Code Mapping supports return orders. Keep these mappings separate from the unresolved item-identity question.
Validate Imported Items Vendor Data and Locations
When Sync Ship Hero Items imports an item, vendor information is also synchronized if the stock item has a vendor or vendors that have already been synchronized to ShipHero. The source does not state which vendor field is used for the connection or what happens when the vendor has not been synchronized.
The Ship Hero Item inquiry provides three review areas. Warehouse Details displays item availability. Vendors displays the vendor connected with the item in ShipHero. Bin Transfers displays transfers for the item. Update Item displays changes made to the ShipHero item, Sync Ship Hero Item synchronizes the item into Acumatica, and Update Warehouse In Ship Hero updates item quantity in ShipHero.
Location setup should be reviewed with the item. Load Acumatica Locations displays ERP locations, and Sync Acumatica Locations exports them to ShipHero. Load Ship Hero Locations displays warehouse-system locations. The documentation says only locations for warehouses configured on Warehouse Cross-Reference are loaded.
The manual supplies no screen IDs for Ship Hero Store, Inventory Details, Warehouse Cross-Reference, Locations, or Ship Hero Item. The only screen ID stated in the document is Customization Projects (SM204505), which is used for package installation and is not an item-mapping screen.
Apply the Documented Mapping Validation Rules
The source provides configuration dependencies rather than a formal SKU validation table.
1 Select a Ship Hero Store integration direction before expecting the related item and mapping tabs to appear.
2 Select Use Cross Ref for Warehouse before expecting Warehouse Cross-Reference to appear.
3 Configure the mapped warehouse because the setup is used for both item synchronization and order import.
4 Select Import Item before expecting imported item type, item class, UOM, and warehouse ID defaults to appear.
5 If Import Item is not selected, confirm Replace Missing Products and Warehouse ID before importing a product that may not exist.
6 Confirm that a vendor is already synchronized before expecting the vendor information of an imported stock item to synchronize with the item.
7 Configure Warehouse Cross-Reference before loading locations because the source limits loaded locations to configured warehouses.
The documentation does not provide error-message text, validation codes, duplicate handling, or a rejected-record inquiry for item synchronization. It does not say how a failed item appears on Inventory Details or whether Purge removes only the displayed staging records or affects data outside the table.
Document the SKU and Alias Rules the Manual Does Not Define
Despite the business need to map ShipHero SKUs, the source never names an SKU field. It does not say that ShipHero SKU equals Acumatica Inventory ID, Inventory CD, Alternate ID, or another field. It also does not show item-level mapping columns on Inventory Details or provide a sample product-to-item mapping.
No alias mechanism is documented. The manual does not identify customer part numbers, vendor part numbers, global trade item numbers, universal product codes, barcodes, alternate IDs, wildcard matching, or case-insensitive matching as valid connector keys. It does not define which identifier wins if multiple candidates exist.
Unmapped-record behavior is documented only through Import Item and Replace Missing Products. The source does not identify a holding queue, error log, notification, or correction screen for a product that cannot be matched or created. It also does not state whether a later successful match replaces an earlier replacement-product line.
A safe implementation record should therefore distinguish documented configuration from tested local behavior. Record the installed screen fields, the exact ShipHero value, the resulting Inventory ID, the Import Item state, the selected defaults, and the warehouse mapping observed in a controlled test. Do not present the observed key as a product guarantee unless it is confirmed by Biz-Tech Services.
Where to Check Your Work
The Biz-Tech Services ShipHero Acumatica Integrator exposes the documented item result in these locations.
1 Ship Hero Store: confirm Store Code, Integration Option, and the tabs displayed for the selected direction.
2 Import Info: confirm Use Cross Ref for Warehouse and Use Cross Ref for Ship Via when those mappings are required.
3 Warehouse Cross-Reference: compare the ShipHero warehouse value with the Acumatica warehouse value used during item synchronization and order import.
4 Sync Info: check Import Item, imported item type, item class, UOM, warehouse ID, Replace Missing Products, Export Price Type, and Export price Quantity.
5 Inventory Details: load both item lists, review the displayed records, and run only the synchronization direction intended for the test.
6 Ship Hero Item: review Warehouse Details, Vendors, and Bin Transfers, then use Update Item or Sync Ship Hero Item as documented.
7 Locations: confirm that the expected warehouses were mapped before loading locations, and review Use Location Mapping, Sellable Location, and Non-Sellable Location.
8 The resulting Acumatica inventory item and sales order line: compare the item, warehouse, UOM, and replacement-product outcome with the configured defaults. The manual does not provide a specific screen ID for this review.
ShipHero SKU and Inventory Item Mapping Frequently Asked Questions
Does the connector documentation say which Acumatica field matches a ShipHero SKU?
No. The manual documents item synchronization and missing-item settings but does not name a ShipHero SKU field or state that it matches Inventory ID, Inventory CD, Alternate ID, or another Acumatica field.
Can the connector create an inventory item that does not exist in Acumatica?
Yes, when Import Item is selected. The connector can create a new item using imported item type, item class, UOM, and warehouse ID as the documented defaults.
What happens when Import Item is not selected?
The source says the connector does not create the new item. It uses the default configured in Replace Missing Products and takes the warehouse from Warehouse ID.
Is item class used to match ShipHero products?
The manual only identifies item class as a default for new item creation. It does not define item class as an SKU match, alias, or cross-reference rule.
Does Warehouse Cross-Reference map ShipHero SKUs?
No SKU behavior is documented for that tab. It maps warehouse values used during item synchronization and order import, including the warehouse associated with an imported item.
Where can I review a synchronized ShipHero item?
Use Inventory Details to load and process item records, then use the Ship Hero Item inquiry to review Warehouse Details, Vendors, and Bin Transfers. The source provides no screen IDs for those locations.
Does the connector support aliases or alternate item identifiers?
The Biz-Tech Services Acumatica ShipHero Integration documentation does not define item aliases, alternate IDs, barcodes, customer part numbers, vendor part numbers, or wildcard matching. Obtain product-specific confirmation before building a mapping process around any of those identifiers.
How can I validate an SKU mapping when the manual does not define the key?
Run a controlled item synchronization and record the exact source value, resulting inventory item, Import Item setting, item defaults, replacement-product outcome, and warehouse mapping. Treat the result as environment-specific until the key is confirmed by Biz-Tech Services.
Work With the Biz-Tech Services ShipHero Connector
A reliable mapping design starts with the controls the manual actually documents: synchronization direction, missing-item handling, creation defaults, and warehouse mapping. The SKU key, aliases, matching precedence, and rejected-record workflow require product-specific confirmation.
If you need help confirming ShipHero item identifiers, testing missing-item behavior, or documenting a controlled SKU-mapping process, visit https://biz-techservices.com to work with the Biz-Tech Services Acumatica ShipHero Integrator.














