FSM Configuration File Structure
The FSM custom configuration is one JSON object containing properties at different levels. A change works only when it is placed under the correct property name. This topic identifies the main configuration areas and how their properties are arranged.
In this topic:
Understanding the Hierarchy
JSON objects are enclosed in braces ({ }). Each property has a quoted name, a colon, and a value. Its value can be another object, an array, text, a number, true, false, or null. A nested object creates another level in the hierarchy. For example:
{
"// preview note": "Enable Preview during review",
"config": {
"preview": true
},
"routes/mobile": {
"log": false,
"user": {
"employee": {
"resources": [
{ "resources": ["inventory"] }
]
}
}
}
}
config and "routes/mobile" are property names in the outer object. Each has an object as its value. preview is a property inside config, and true is its value. log belongs inside "routes/mobile", and false is its value. The two resources properties contain arrays. The outer array contains an object that identifies resources to load for an employee. The inner array contains the resource ID "inventory". The "// preview note" property is a quoted note name that FSM removes before applying the configuration.
The example shows placement, not a complete account configuration. Add only the intended properties to an existing configuration and preserve unrelated properties.
Arrays and Property Names
An array is an ordered list enclosed in [ ]. For example, ["inventory", "shared_choices"] is a list of two resource IDs. A property can hold an array or an object containing an array. When you replace a standard array, include all entries that must remain. FSM does not add omitted standard entries back into that array.
Do not repeat a property name within the same object. Repeated names are not a JSON syntax error, but FSM keeps only the last value. With Preview enabled, an earlier duplicate can disappear from the Editor when you finish changing the field. Saving also removes earlier duplicates, whether Preview is enabled or not. This applies to names used for notes: two "//" properties in one object cannot retain two separate notes. Give each note a different quoted name, such as "// preview note" and "// mobile note". The same property name can occur in different nested objects. Avoid names that differ only by letter case because FSM matches standard property names without regard to case.
Quoted names beginning with // are JSON properties that FSM removes before applying configuration. Unquoted // comments are invalid JSON. Duplicate property names can pass the syntax check, so review names as well as values before saving.
Finding a Configuration Area
FSM looks for configuration properties at the outermost level of the JSON object. The name and nesting of each property determine which area it controls. Use the documented root property names exactly, including any slash. A slash is part of a property name. It does not create another level in the hierarchy.
The following table identifies the main configuration areas and their root properties.
|
Root Property or Pattern |
Configuration Area |
|---|---|
|
|
Configuration-form properties, including Preview. See Using Configuration Preview. |
|
|
People using FSM Mobile, jobs, resource selection, named resources, and FSM Mobile behavior. See FSM Mobile Resource Selection and Shared Data. |
|
|
Schedule Board events, resources, filters, views, and related behavior. See FSM Schedule Board Configuration. |
|
|
Pattern for individual record-model properties, such as |
|
|
Pattern for individual view properties, such as |
|
|
FSM notification configuration. See FSM Notification Configuration. |
|
|
FSM report configuration, including service-report behavior. For service-report properties, see FSM Service Report Configuration. |
|
Other feature properties |
Root properties for capabilities such as |
In the two patterns, <name> is a placeholder for a specific model or view name. Replace the placeholder with the specific name and omit the angle brackets. Each completed name is a separate root property. Do not create a "models" or "views" wrapper.
For example, write "routes/mobile" as one property name in the outer object, as shown in Understanding the Hierarchy. The following is incorrect placement because it splits that name into two objects:
{
"routes": {
"mobile": {
"log": false
}
}
}
FSM expects "routes/mobile", so the nested "routes" and "mobile" properties do not place log in the intended location. The same naming rule applies to "routes/scheduler", "models/asset", and "views/case/tasks".
The table identifies configuration areas, not all supported options. Use only properties and values verified for the capability you are configuring. Although standard property names are matched without regard to letter case during merging, use the documented spelling and capitalization. Different nesting or slash placement is not equivalent.
Understanding Mobile Placement
Inside the literal "routes/mobile" root key:
-
event.articledefines the record sources for jobs shown in FSM Mobile. For example,event.article.taskdescribes CRM Task events. -
An event definition's
resourcesrules select resources available for its jobs. For example,event.article.task.resourcesselects resources for CRM Task events. -
user.employee.resourcesselects supporting resources loaded for matching employees. -
Named resource definitions, including
inventory, are direct entries under"routes/mobile". There is no generaltabswrapper.
FSM Mobile Resource Selection and Shared Data explains rule order, shared lookup data, and the difference between user and job resources.
Configuration Placement
Configuration Preview shows the merged location of a property. It does not establish that the property is supported. Use the documented configuration path and property name.