Infor SyteLine

LoadCollection Best Practices for SyteLine IDOs

LoadCollection is the most frequently called IDO operation in any SyteLine environment. Every time a form opens, a grid populates, or a report fetches data, a LoadCollection request fires against the IDO Runtime. Poorly constructed LoadCollection calls are the number one cause of SyteLine performance degradation, making this the most impactful area to optimize.

Constructing Efficient LoadCollection Requests

An optimized LoadCollection request specifies exactly the data needed and nothing more. Start with a focused PropertyList containing only the columns your form or integration requires. Apply a selective Filter to limit the result set to relevant records. Set RecordCap to prevent unbounded queries that can lock SQL Server resources and crash the IDO Runtime. Use OrderBy on indexed columns so SQL Server can perform a seek rather than a sort on large tables.

  • Always specify PropertyList explicitly: avoid empty PropertyList which loads every IDO property
  • Use parameterized filter values to prevent SQL injection in custom integration code
  • Set RecordCap between 50-500 for form grids; use pagination for larger data sets
  • Include OrderBy on the primary key or a filtered column to enable index seek operations
  • Use the Distinct flag for lookup/dropdown scenarios to eliminate duplicate display values

Common LoadCollection Anti-Patterns

Several patterns consistently cause performance problems in SyteLine deployments. Loading entire collections without filters on large tables like co_line, matltran, or item causes full table scans that can exceed SQL Server memory grants. Requesting all properties when only two or three are needed wastes network bandwidth and IDO serialization time. Firing multiple sequential LoadCollection calls in a loop instead of using a single filtered query multiplies round-trip latency. Each of these anti-patterns is avoidable with deliberate request construction.

  • Anti-pattern: LoadCollection on SLCoItems with no filter returns all customer order lines across all orders
  • Anti-pattern: Empty PropertyList on SLMatlTrans loads 50+ columns including large text fields
  • Anti-pattern: Looping LoadCollection calls per item instead of using IN-style filter: Item IN (N'A', N'B')
  • Anti-pattern: Missing RecordCap on SLJobs allows a single request to return 100K+ rows
  • Anti-pattern: Using LIKE N'%keyword%' with leading wildcard prevents index usage on any column

Monitoring and Profiling LoadCollection Performance

SyteLine provides several tools to identify slow LoadCollection operations. The IDO Runtime Performance Counters expose request duration, queue depth, and throughput metrics in Windows Performance Monitor. SQL Server Profiler or Extended Events can capture the actual SQL generated by LoadCollection requests, revealing missing indexes and expensive query plans. The SyteLine Application Event Log records IDO timeout errors that indicate systemic performance issues needing attention.

  • Enable IDO Runtime performance counters in Windows PerfMon: Mongoose IDO Runtime category
  • Use SQL Profiler to capture queries from the SyteLine application database and review execution plans
  • Monitor the IDO request queue: sustained queue depth > 10 indicates server-side bottlenecks
  • Set up SQL Server alerts for long-running queries (> 5 seconds) originating from the IDO Runtime login
  • Review the SLAppServer.log for repeated timeout messages on specific IDO names

Netray's AI agents can audit your entire SyteLine environment for LoadCollection inefficiencies and generate optimized request patterns automatically. Start your free analysis.