System properties
Quick answer
What system properties are, how to create and read them safely, and the properties every administrator should know before an upgrade.
Key takeaways
- Read properties with gs.getProperty so caching applies
- Namespace custom properties with a prefix you own
- Properties move in update sets, values do not always move between instances
- Never store credentials in a property, use credentials or connection records
What a property is
A system property (sys_properties) is a name and value pair the platform reads at runtime. Properties drive behaviour that would otherwise need code changes, for example how many rows a list shows or whether an integration runs in debug mode.
Reading properties in script
Always read through the API rather than querying the table, so you get caching and type conversion.
var rows = gs.getProperty('glide.ui.per_page', '20');
var debug = gs.getProperty('x_acme.integration.debug', 'false') === 'true';Creating your own
Namespace custom properties with your scope or company prefix so they sort together and survive upgrades.
- Use a suffix that states the type, for example .enabled, .url, .timeout_ms
- Set a sensible default in the property description, not just in your head
- Give the property a Choices list when the value must be one of a few options
Properties worth knowing
These come up in most projects: glide.ui.per_page for list size, glide.email.smtp.active for outbound mail, glide.ui.session_timeout for session length, glide.script.block.client.globals for client script globals, and glide.sys.date_format for date rendering.
Want to learn this properly?
Our live, instructor-led ServiceNow Training covers this hands-on, with real projects and a certification path.
Check your understanding
Which call returns a property with a default?
- A. gs.getProperty('name','default')
- B. gs.property('name')
- C. new GlideRecord('sys_properties')
- D. gs.getValue('name')
Show answer
A. gs.getProperty('name','default')
gs.getProperty takes an optional second argument used when the property is missing or empty.
Why namespace custom properties?
- A. It is required by the platform
- B. So they sort together and are not confused with platform properties
- C. It encrypts the value
- D. It makes them readable without a role
Show answer
B. So they sort together and are not confused with platform properties
Namespacing keeps custom configuration identifiable and upgrade safe.