Understanding Data Flow Patterns in SyteLine Forms
Data flows through a SyteLine form in a structured pipeline: from the database through the IDO layer into the form's data collection, then rendered onto UI controls, modified by user interaction, validated by scripts, and persisted back through the IDO layer to the database. Understanding each stage of this pipeline is essential for writing correct customizations that interact with data at the right point in the lifecycle.
The Load Pipeline: Database to Form
When a form opens or refreshes, the SyteLine client issues a LoadCollection request to the IDO Runtime. The request specifies which IDO to query, which properties to retrieve, and what filter to apply. The IDO Runtime translates this into SQL, executes against the application database, and returns a result set. The form's PrimaryIDOCollection receives this data and populates its internal data structure. Each row becomes an object in the collection, and each column becomes a property on that object. Form controls bound to IDO properties automatically display the current object's values through data binding.
- LoadCollection request is built from the form's Filter, PropertyList, and RecordCap settings in the form definition
- IDO Runtime applies security checks and executes the translated SQL against the application database
- PrimaryIDOCollection.CurrentObject represents the currently displayed record in the form
- Data binding links form controls (text boxes, dropdowns) to IDO properties automatically
- StdObjectLoaded fires after the current object is populated, giving scripts access to the loaded data
The Edit Pipeline: User Interaction to Dirty State
When a user modifies a form control, the change propagates through the data binding layer to the underlying IDO property. The PrimaryIDOCollection tracks which properties have been modified, marking the collection as dirty. This dirty state controls the save button enablement and triggers unsaved-changes warnings on form close or navigation. Script-initiated property changes via SetCurrentObjectProperty follow the same pipeline and also mark the collection dirty. Understanding this flow explains why setting properties in StdObjectLoaded (which fires after load but before user interaction) can inadvertently mark a freshly loaded record as dirty.
- User types in a bound text box → data binding updates the IDO property → collection marked dirty
- IsDirty flag tracks whether any property has changed since the last load or save operation
- SetCurrentObjectProperty in scripts also marks dirty: use BeginInit/EndInit to suppress dirty marking
- The Undo button reloads the current object from the last saved state, clearing the dirty flag
- Grid edits follow the same pattern: cell changes propagate to the child IDO collection's properties
The Save Pipeline: Validation Through Persistence
When the user clicks Save, the form initiates the save pipeline: StdFormPreSave fires first for script-level validation. If validation passes, the form constructs an UpdateCollectionRequestData containing InsertCommand, UpdateCommand, and DeleteCommand objects for all modified rows. This request goes to the IDO Runtime, which applies extension class logic, executes the SQL, and returns success or failure. On success, StdObjectSaved fires, and the form reloads the saved data to reflect any server-side defaults or computed values. On failure, the error propagates back to the form for display.
- StdFormPreSave: script validation checkpoint; set e.Cancel = true to block the save
- UpdateCollection construction: framework auto-detects inserts, updates, deletes from dirty tracking
- IDO Runtime: applies extension class PreSave hooks, executes SQL, applies PostSave hooks
- Success: StdObjectSaved fires, form refreshes data to show server-side changes (timestamps, sequences)
- Failure: IDOException or IDOMethodException propagates to form as an error dialog or status message
Netray AI agents map your complete SyteLine form data flows, identify bottlenecks, and recommend optimization points. Understand your ERP data lifecycle end to end.
Related Resources
SyteLine Form Event Handlers Guide
Master SyteLine form event handlers including StdObjectLoaded, StdObjectSaved, and StdObjectDeleted. Build responsive forms in Infor CloudSuite Industrial.
Infor SyteLineSyteLine LoadCollection Best Practices
Optimize SyteLine LoadCollection calls with best practices for filters, property lists, and pagination. Improve IDO query performance in CloudSuite Industrial.
Infor SyteLineSyteLine UpdateCollection Patterns for CRUD
Master SyteLine UpdateCollection for insert, update, and delete operations. Learn IDO command patterns, transaction handling, and error recovery in CloudSuite Industrial.