SyteLine Event Action Parameter Functions Reference
This reference covers the event action parameter functions used most in Infor SyteLine and CSI 10 event handlers. Each row gives the return value, exact syntax or a confirmed example, and the events where the function works.
| Function | Category | What it returns | Syntax or example | Works in |
|---|---|---|---|---|
E | Variables and parameters | Value of an event parameter (typeless) | E("OrderNum") | Any event that passes that parameter |
V | Variables and parameters | Value of an event variable (typeless) | V("ApprovedBy") | Any handler |
GC | Variables and parameters | Value of an event global constant (typeless) | GC("CreditManager") | Any handler; constants defined on Event Global Constants |
SV | Variables and parameters | Value of a session variable (typeless) | SV(var) | Any handler |
FE | Variables and parameters | Event parameter as a quoted string, or unquoted NULL if empty | FE(param) | Building filters |
FV | Variables and parameters | Event variable as a quoted string, or unquoted NULL if empty | SUBSTITUTE("CustNum = {0}", FV("CustNum")) | Building filters |
FGC | Variables and parameters | Global constant as a quoted string, or unquoted NULL if empty | FGC(constant) | Building filters |
FSV | Variables and parameters | Session variable as a quoted string, or unquoted NULL if empty | FSV(var) | Building filters |
TV | Variables and parameters | Pre-parser: expands an event variable as text that can contain other grammar elements | TV(varName) | Any handler |
TGC | Variables and parameters | Pre-parser: expands a global constant as text that can contain other grammar elements | TGC(conName) | Any handler |
P / PROPERTY | IDO and properties | Value of a property on the row in the event (typeless) | P("CreditHold") on SLCustomers update | IdoOnItem and IdoPostItem events (Insert, Update, Delete) |
P2 / PROPERTY2 | IDO and properties | Property value from a given one-based row | PROPERTY( row#, propertyName ) | IdoOnLoadCollection, IdoPostLoadCollection |
P3 / PROPERTY3 | IDO and properties | Property value from a row of a named result set | PROPERTY( collection, row#, propertyName ) | Any event, after a Load IDO Collection action |
FP / FILTERPROPERTY | IDO and properties | Property value as a quoted string, or unquoted NULL if empty | SUBSTITUTE("CoNum = {0}", FP("CoNum")) | IdoOnItem and IdoPostItem events; FP2 and FP3 as for P2 and P3 |
PROPERTYMODIFIED | IDO and properties | TRUE if the property changed from its original value | PROPERTYMODIFIED("CreditHold") | IdoOnItemInsert, IdoOnItemUpdate, IdoOnItemDelete |
PROPERTYAVAILABLE | IDO and properties | TRUE if the property and its value are available in the event | PROPERTYAVAILABLE("CreditHold") | All IdoOnItem, IdoPostItem and load collection events |
PROPERTYNAMES | IDO and properties | List of properties retrieved, inserted or updated | PROPERTYNAMES() | IdoOnLoadCollection, IdoPostLoadCollection, IdoOnItemInsert, IdoOnItemUpdate |
FILTERSTRING | IDO and properties | The query filter as a quoted string, or unquoted NULL | FILTERSTRING() | IdoOnLoadCollection, IdoPostLoadCollection |
IDO | IDO and properties | Name of the IDO collection for the request | IDO() | All IDO events |
METHOD | IDO and properties | Name of the method being invoked | METHOD() | IdoOnInvoke, IdoPostInvoke |
METHODPARM | IDO and properties | Value of the method parameter at an index | METHODPARM(1) | IDO method invoke events |
METHODPARMS | IDO and properties | Count of parameters required by the method | METHODPARMS() | IDO method invoke events |
ROWS | IDO and properties | Rows loaded by the collection that raised the event; 0 elsewhere | CONDITION(ROWS()>1000) | IdoPostLoadCollection |
ROWS (collection) | IDO and properties | Number of rows in a named result set | ROWS( collection ) | After a Load IDO Collection action |
RECORDCAP | IDO and properties | Record cap of the current query | RECORDCAP() | IdoOnLoadCollection, IdoPostLoadCollection |
DBFUNCTION | IDO and properties | Result of a database function | DBFUNCTION( functionName, arg1, arg2, ... ) | Database operations only |
IF | Event context | One of two expressions depending on a condition | IF( condition, trueExpr, falseExpr ) | Any parameter |
CAST | Strings | The expression treated as DATE, NUMBER or STRING | CAST(P("CreditLimit") AS STRING) | Any parameter |
SUBSTITUTE | Strings | A string with {0}, {1} zones filled at run time | SUBSTITUTE("User {0} loaded {1} rows", USERNAME(), ROWS()) | Any parameter; zones start at {0} and must be consecutive |
CLIENTSUBSTITUTE | Strings | A FORMAT() string resolved from a forms database string, safe for commas and parentheses | CLIENTSUBSTITUTE( pattern {, arg} ... ) | Messages shown in the client |
SUBSTRING | Strings | Part of a string | SUBSTRING( string, start [, length] ) | Any parameter |
INSTR | Strings | Start position of string2 in string1, or 0 | INSTR( string1, string2 ) | Any parameter |
LEN | Strings | Length in characters | LEN( string ) | Any parameter |
LOWER | Strings | String in lowercase | LOWER( string ) | Any parameter |
UPPER | Strings | String in uppercase | UPPER( string ) | Any parameter |
REPLACE | Strings | string1 with every string2 replaced by string3 | REPLACE( string1, string2, string3 ) | Any parameter |
CURDATETIME | Dates | Current date and time corrected for the site time zone | CURDATETIME() | Any parameter; like dbo.GetSiteDate(getdate()) in T-SQL |
DATE | Dates | A date from its parts | DATE( year, month, day ) | Any parameter; 3 or 7 arguments only |
DATEADD | Dates | A date plus an interval | DATEADD( day, 7, CURDATETIME() ) | Any parameter; same date parts as T-SQL |
DATEDIFF | Dates | Boundaries crossed between two dates (endDate minus startDate) | DATEDIFF( datePart, startDate, endDate ) | Any parameter |
DATEPART | Dates | Integer value of one part of a date | DATEPART( month, CURDATETIME() ) | Any parameter |
ROUND | Math | Number rounded to a length; negative length rounds left of the decimal | ROUND( numExpr, 2 ) | Any parameter |
FLOOR | Math | Greatest integer less than or equal to the value | FLOOR( numExpr ) | Any parameter |
CEILING | Math | Least integer greater than or equal to the value | CEILING( expr ) | Any parameter |
NEWGUID | Event context | A new GUID string | NEWGUID() | Any parameter |
USERNAME | Event context | Logon ID of the user logging on or off | USERNAME() | SessionOnLogin, SessionOnLoginFailed, SessionOnLogout |
CONFIGNAME | Event context | Configuration of the running event | CONFIGNAME() | Session events |
EVENTNAME | Event context | Name of the event being processed | EVENTNAME() | Any handler |
ORIGINATOR | Event context | User ID that started the event handler | ORIGINATOR() | Any handler |
BODNOUN | BOD | Noun part of the BOD noun/verb pair | BODNOUN() | BOD events |
BODVERB | BOD | Verb part of the BOD noun/verb pair | BODVERB() | BOD events |
BODXML | BOD | XML string of the BOD | BODXML() | BOD events |
SUBXML | BOD | XML string of the nodes selected by an XPath | SUBXML( BODXML(), extractionPath ) | Any parameter that takes XML |
Names follow the CSI 10.x 'About Event Action Parameter Functions' list; syntax follows each function's own help topic. Where the help gives only a syntax line, the example column shows that syntax rather than an invented example. Build expressions in the Event Action Expression Editor and click Check Syntax.
Get an expression checked
Paste an event action expression that will not pass Check Syntax or returns the wrong value and we will tell you which function or event mismatch is the cause.
Optional. The tool and every export work without this. No spam.
How to use it
Filter by category to find the function family you need: variables and parameters, IDO and properties, strings, dates, math, event context or BOD. In SyteLine, open Event Actions, click Edit Parameters and use the Event Action Expression Editor: its Select a function field lists these functions and inserts them with the right brackets. You can type them into the Parameters field directly, but always click Check Syntax afterwards. The Works in column matters more than it looks: several functions silently return empty values or 0 when used on the wrong event.
Plain functions versus filter functions
E, V, GC, SV and P return typeless values that are fine for conditions and assignments. Their F versions (FE, FV, FGC, FSV, FP) return the value wrapped in quotes, or an unquoted NULL when empty, which is exactly what an IDO filter string needs. That is why a Load IDO Row filter is usually built with SUBSTITUTE and an F function, for example SUBSTITUTE("CustNum = {0}", FV("CustNum")). Using V there would produce CustNum = C000123 without quotes and the load fails or returns the wrong rows.
- Conditions and assignments: E, V, GC, SV, P
- Filters: FE, FV, FGC, FSV, FP and FILTERSTRING
- Text that contains more grammar: the pre-parser functions TV and TGC
Worked example: credit hold change alert
On a handler for IdoOnItemUpdate applying to SLCustomers, give a Notify action the condition PROPERTYMODIFIED("CreditHold") so it only runs when credit hold changes. Build the subject with SUBSTITUTE("Credit hold changed for {0}", P("CustNum")) and the body with SUBSTITUTE("Changed by {0} at {1}", ORIGINATOR(), CURDATETIME()). ORIGINATOR is used here, not USERNAME, because USERNAME is documented for the session events. If the property might not be in the request, wrap the logic with PROPERTYAVAILABLE("CreditHold") first.
Gotchas
PROPERTY has three forms: P for item events, P2 with a row number for load collection events, and P3 with a result set name after Load IDO Collection. ROWS() with no argument only counts on IdoPostLoadCollection; ROWS(collection) counts a named result set. SUBSTITUTE zones must start at {0} and be consecutive. DATEADD, DATEDIFF and DATEPART follow T-SQL date parts, and DBFUNCTION is only available for database operations. Newer releases add functions; if a name here is missing from your editor, your release predates it.
Frequently Asked Questions
How do I pass custom parameters to a SyteLine event?
Define the parameters on the custom event, then fire it with a Generate Event action (or from code) and pass values for them. In the handler, read each one with E("ParamName"), or FE for use in a filter. Framework events pass their own fixed parameters, read with the matching functions such as P, METHOD or BODXML.
Why does my filter built with V() fail?
V returns the raw value without quotes, so a filter like CustNum = V("Cust") becomes an unquoted literal. Use FV, which returns the value as a quoted string or NULL, inside SUBSTITUTE to build the filter text. The same applies to E versus FE, GC versus FGC, SV versus FSV and P versus FP.
What does the pre-parser function TV do?
TV expands an event variable as plain text before the rest of the expression is parsed. Use it when the variable holds grammar elements, such as a shared expression or a group of functions, that must then be evaluated. TGC does the same for an event global constant.
Can I call a SQL function from an event action?
Yes, DBFUNCTION( functionName, arg1, arg2, ... ) calls a database function, and the help notes it is available only for database operations. For anything heavier, such as writing several tables, use a Call Database Method action against a stored procedure instead of a long expression.
If you want developers to ask questions about your SyteLine handlers and data in plain English on your own servers, we can set up a private assistant for that.
Related Tools
SyteLine Event Action Types Reference
The 26 action types on the SyteLine Event Actions form, with what each does, the parameters that matter and which ones make a handler wait.
Developer ToolsSyteLine Mongoose Framework Events Reference
Every framework event an application event handler can subscribe to in SyteLine 9/10 and CSI on-prem, with when it fires, what it passes and the traps to avoid.
Developer ToolsSyteLine Mongoose API Options Reference
A side-by-side reference of the Mongoose interfaces for SyteLine 9/10 and CSI: endpoint, authentication, operations, best use and the traps in each.
Infor SyteLineSyteLine IDO Names Reference
Searchable list of common SyteLine IDO names with the underlying tables, to speed up REST integrations and form work.
More Developer Tools tools
See all- SyteLine IDO REST Request Generator
- SyteLine SQL Query Generator for Item, Job and Order Tables
- SyteLine SQL Blocking and Long Running Query Script Generator
- SyteLine Custom Table CREATE Script Generator
- SyteLine WinStudio Standard Form Events Reference
- SyteLine SQL User-Defined Data Types Reference
- SyteLine IDO Extension Class Method Generator
- SyteLine IDO Custom Load Method Generator
- SyteLine Form Script Generator
Keep exploring
Free tools
- SyteLine Event Action Types ReferenceThe 26 action types on the SyteLine Event Actions form, with what each does, the parameters that matter and which ones make a handler wait.
- SyteLine Event System Troubleshooting ChecklistChecks for event handlers in SyteLine 9 and CSI 10 that do not fire, fire twice or hang, from event name and flags to runtime services and action outcomes.
- SyteLine Mongoose Framework Events ReferenceEvery framework event an application event handler can subscribe to in SyteLine 9/10 and CSI on-prem, with when it fires, what it passes and the traps to avoid.
ERP fixes and how-tos
- How the SyteLine Event System Works for Workflow NotificationsHow SyteLine's Event Manager triggers email alerts, Mongoose scripts and ION Workflow off IDO methods: setup steps, Before/After timing, and troubleshooting.
- How to Send SyteLine Business Event Alerts to Infor Ming.leHow to turn SyteLine business events into Infor Ming.le alerts and notifications: event handlers, ION, recipients, noise control and a decision guide.
- How to Set Up Business Events and Actions in IFSConfigure IFS Business Events and Actions step by step: define triggers on an entity, enable the event, and bind an email, workflow, or webhook action.
Guides
- SyteLine Event System Customization GuideCustomize SyteLine with the event system. Build event handlers, manage triggers, and extend CloudSuite Industrial without modifying base code.
- How to Configure Event Handlers in SyteLineStep-by-step guide to configuring event handlers in Infor SyteLine for automated responses to data changes, user actions, and system events across your ERP environment.
- SyteLine Event Handler Development Complete GuideDevelop SyteLine event handlers. Pre/post events, IDO events, form events, error handling, and performance optimization for custom event logic.