Skip to main content
Question

Lot/Serial Details (IN209600) Not Displaying Programmatically-Set STRAIN Attribute + Business Event Polling Concern

  • May 21, 2026
  • 0 replies
  • 1 view

I'm working on a customization that propagates a parent production order strain to the finished-good lot's STRAIN attribute when a Move transaction is released. The data is being written correctly, but the Lot/Serial Details popup (IN209600) doesn't reflect it visually. I'd appreciate guidance on the correct write path. I also want to flag a secondary issue with Business Event polling in this tenant.

 

Environment

  • Acumatica version: 26.100.0175.1

  • Tenant: Village Farms Development
  • Customization Project: StrainPropagation (Level 20)
  • Custom class: MoveStrainPropagationExt - a PXGraphExtension<MoveEntry> overriding the Release action

Background on approach (why code instead of a Business Event) The original plan was to implement this as a no-code Business Event + Generic Inquiry + Import Scenario. However, Business Event polling has been unreliable in this tenant - BEs configured against a GI filtering AMBatch / AMMTran (released by-product and final-move events) did not fire consistently on the trigger events, even after the underlying GI rows met the filter conditions. Because of this, I switched to a graph extension to get deterministic timing and control over the propagation.

 

What the code does (on Move release) For each AMMTran row with a LotSerialNbr:

  1. Loads the parent AMProdItem and reads UsrStrain (custom field with PXSelector against CSAttributeDetail.valueID where attributeID = 'STRAIN').
  2. Looks up INItemLotSerial for the lot.
  3. Inserts (or updates) a CSAnswers row with:
    • RefNoteID = INItemLotSerial.NoteID
    • AttributeID = "STRAIN"
    • Value = strain valueID (e.g., "DBUGER")
    • IsActive = true
    • NoteID = new Guid

I've tried both PXDatabase.Insert<CSAnswers>(...) and the graph cache + PressSave() pattern - both run successfully.

 

Verification that the data is correctly stored

  • Request Profiler confirms the INSERT runs with the expected parameter values during Move release.
  • A Generic Inquiry I built (CSAnswers Check) joins CSAnswers to INItemLotSerial via CSAnswers.RefNoteID = INItemLotSerial.NoteID. After 6 test Move releases (lots 20260519-037 through 20260519-042, item W03-00025, Lot/Serial Class VF SECOND), all 6 lots show STRAIN = DBUGER correctly linked to the right INItemLotSerial row.
  • The STRAIN attribute is configured at the Lot/Serial Class level for VF SECOND. IN209600 does display the STRAIN attribute row for these lots - just the Value column is blank.

Problem

  1. IN209600 doesn't reflect the value, even though the CSAnswers row exists and joins correctly to INItemLotSerial.NoteID.
  2. When I manually pick a strain value in IN209600 and click Save, Request Profiler shows no INSERT/UPDATE on CSAnswers (or any other table). The UI shows the new value momentarily, but it doesn't appear to persist - suggesting IN209600 may be read-only for AM-released lots in this build.

Questions

  1. What is the correct storage path that IN209600 reads from to display lot attribute values? Is there a parallel/cache table (for example, INItemLotSerialAttributesHeader or similar - introduced in a recent release) that must be populated in addition to or instead of CSAnswers?

  2. Is there a recommended graph or method for setting a lot/serial attribute value from custom code so it appears on IN209600?
  3. Is IN209600 expected to be read-only for lots created by released AM Move transactions, or is there a configuration that controls this?
  4. Separately on Business Events: Is there a way to diagnose BE polling health in this tenant? BEs configured against AM module record changes (via a Generic Inquiry data source) did not fire consistently on commit, which is what forced the code-based approach. Any known limitations with BE polling on AM/IN module records, or recommended diagnostic steps, would be appreciated.

I can share the customization project, screenshots of the GI proving the CSAnswers linkage, and Request Profiler captures if helpful.