FuuzHelp Center

Administer · App Management

Configurations

Last updated December 27, 2025, 3:30 PM UTC · fuuz.com/help/configurations

Application Configurations

Article Type: Concept
Audience: App Administrators, Application Designers, Developers
Module: App Management
Applies to Versions: All Versions

1. Overview

Application Configurations provide a flexible, schema-validated system for defining custom configuration data that extends beyond standard Application Settings. This feature enables App Administrators and Developers to create enterprise-grade solutions where business logic can be abstracted from application logic, allowing configuration changes in production environments without code deployment. Configurations support complex nested JSON structures with validated references to system and custom data models, making them ideal for multi-site deployments, dynamic workflows, and adaptable business rules.

Note: Application Configurations are scoped per application and per environment. Unlike Application Settings which provide standardized system-wide preferences, Configurations allow fully customizable schema definitions tailored to specific business requirements. New applications have no configurations by default unless explicitly created.

2. Architecture & Data Flow

Definitions

Components

Configuration Scope

Important: The ability to modify configurations directly in production without code deployment is a powerful feature. Changes to configurations in build or QA environments must be intentionally migrated to production—there is no automatic synchronization.

3. Use Cases

4. Screen Details

The Application Configurations screen is accessed via App Management > Configurations in the App Admin menu section.

Configurations Table

The main table displays all available configurations with the following columns:


Available Actions


Configuration Editor

When creating or editing a configuration, the following fields are available:

Note: The system validates Config Json against the defined Config Schema before allowing save operations. Invalid JSON structures or schema violations will prevent configuration updates with descriptive error messages.

5. Technical Details

JSON Schema Structure

Config Schema uses standard JSON Schema format with Fuuz-specific extensions for UI rendering and data model integration.

Supported Field Types

Type Description Use Case
string Text values Names, descriptions, regex patterns, URLs
number Numeric values (float or integer) Thresholds, quantities, percentages
integer Whole number values Counts, IDs, port numbers
boolean True/false flags Feature toggles, enable/disable flags
object Nested JSON object with properties Complex structures, table references
array Ordered list of items Multiple selections, lists of records
null Null/empty value Optional fields with no default
any Any valid JSON value type Dynamic or polymorphic data

Table References (Lookups)

Table references create validated dropdown selections from system or custom data models. When a user configures a field with a table reference, they select from actual records in the specified data model.

Input Props for Single Selection:

{
"type": "object",
"inputProps": {
"type": "select",
"dataModel": "Screen",
"labelPath": "name",
"labelField": "name",
"stateTracking": "full",
"multiselect": false,
"selectFields": ["id", "name", "description"]
}
}

Input Props for Multi-Selection:

{
"type": "array",
"items": {},
"inputProps": {
"type": "select",
"dataModel": "Route",
"labelPath": "title",
"labelField": "title",
"stateTracking": "full",
"multiselect": true,
"selectFields": ["id", "title", "path", "screen.active", "screen.name"]
}
}

Input Props Parameters

Parameter Description
type Input type (typically "select" for table references)
dataModel Name of the data model to query (e.g., "Screen", "Route", "User", custom models)
labelPath Field path displayed in dropdown (supports nested paths with dot notation)
labelField Primary field for label display
stateTracking Tracking mode for selected values (typically "full" to store complete record data)
multiselect Boolean flag: true for array of selections, false for single selection
selectFields Array of field paths to include in the configuration JSON (supports nested fields)

Embedded Options (User-Defined Lists)

Instead of table references, you can define embedded option lists that are validated within the configuration context only:

{
"type": "string",
"enum": ["Option1", "Option2", "Option3"]
}

Required and Default Values

Use standard JSON Schema keywords to define required fields and defaults:

{
"type": "object",
"properties": {
"requiredField": { "type": "string" },
"optionalField": { "type": "string", "default": "defaultValue" }
},
"required": ["requiredField"]
}

Accessing Configurations

Application Configurations are accessible via standard GraphQL queries throughout the Fuuz platform.

From Screens (JSONata Bindings)

Use GraphQL queries in screen data sources or component bindings to retrieve configuration data:

query {
ApplicationConfiguration(name: "Mobile Menu Configuration") {
configJson
}
}

From Data Flows

Query configurations in flow nodes using GraphQL operations to retrieve configuration data for transformation or routing logic.

From Web Flows

Access configurations via GraphQL queries in web flow nodes to dynamically adjust API responses or business logic based on configuration values.

From External Integrations

Use the Fuuz GraphQL API endpoint to query configurations from external systems. Cross-tenant access is available via API if needed.

Complete Example Configuration

Use Case: Mobile menu configuration that defines parent screens and their associated child screen routes.

Configuration Metadata:

Config Schema:

{
"type": "object",
"properties": {
"screens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"parentScreen": {
"writeOnly": false,
"readOnly": false,
"deprecated": false,
"examples": [],
"minProperties": 0,
"inputProps": {
"type": "select",
"dataModel": "Screen",
"labelPath": "name",
"labelField": "name",
"stateTracking": "full",
"multiselect": false,
"selectFields": ["id", "name", "description"]
},
"type": "object"
},
"childScreens": {
"writeOnly": false,
"readOnly": false,
"deprecated": false,
"examples": [],
"minItems": 0,
"uniqueItems": false,
"inputProps": {
"type": "select",
"dataModel": "Route",
"labelPath": "title",
"labelField": "title",
"stateTracking": "full",
"multiselect": true,
"selectFields": [
"id", "title", "path",
"screen.active", "screen.name"
]
},
"type": "array",
"items": {}
}
}
}
}
}
}

Config Json:

{
"screens": [
{
"parentScreen": {
"id": "mobileHomeTemplateScreen",
"name": "Mobile Home Template Screen",
"description": ""
},
"childScreens": [
{
"id": "cmfy3xugo0cyv014vfb6443fg",
"title": "Gateway Dashboard",
"path": "/system/testing/gatewayDashboard",
"screen": {
"active": true,
"name": "Gateway Dashboard"
}
},
{
"id": "cmfy3bjqp0bc80149gruo1g92",
"title": "Application Dashboard",
"path": "/system/testing/applicationDashboard",
"screen": {
"active": true,
"name": "Application Dashboard"
}
}
]
}
]
}

Accessing in Screen:

/* GraphQL Query in Screen Data Source */
query {
ApplicationConfiguration(name: "Mobile Menu Configuration") {
configJson
}
}

/* JSONata to extract child screens for first parent */
$config := $ApplicationConfiguration.configJson;
$config.screens[0].childScreens

6. Resources

7. Troubleshooting

Issue Cause Resolution
Cannot save configuration - schema validation error Config Json does not conform to the defined Config Schema Review the validation error message which indicates the specific schema violation. Verify that all required fields are present, data types match the schema, and nested structures follow the defined pattern. Use a JSON validator to check syntax before attempting to save.
Configuration not appearing in GraphQL queries Configuration may be in wrong environment or query syntax incorrect Verify you are querying the correct environment (configurations are per-environment). Check the configuration name spelling exactly matches. Use the API Tree Browser to explore available ApplicationConfiguration queries.
Table reference dropdown is empty Referenced data model has no records or access permissions issue Verify the data model specified in inputProps.dataModel contains records. Check that your user has permission to read from the referenced data model. Ensure the dataModel name is spelled correctly.
Configuration changes not reflected in production Configurations do not automatically replicate across environments Manually update the configuration in the production environment, or include the configuration in a migration package and deploy to production. Remember that this non-replication is intentional to allow environment-specific configurations.
Complex nested structure causing performance issues Configuration JSON is excessively large or deeply nested Consider breaking large configurations into multiple smaller configurations. Use GraphQL query selectFields to retrieve only necessary data. Cache configuration data in screen or flow state rather than querying repeatedly.
Regex pattern in configuration not working as expected Regex string may need escaping in JSON or pattern is incorrect Store regex patterns as strings in configuration JSON. When using in flows or screens, ensure proper escaping for backslashes (use \\ instead of \). Test regex patterns outside Fuuz first, then add validation in flows to catch pattern errors.
Unable to modify configuration - access denied Only App Admins and Developers can create/modify configurations Verify you have App Admin or Developer access type. End users and other access types cannot modify configurations even if they have roles. Contact your administrator to grant appropriate access.
Need to rollback configuration to previous version No automatic rollback feature available Navigate to Data Management > Data Changes. Filter by ApplicationConfiguration data model and locate the configuration record. Review the change history to see previous JSON values. Copy the previous JSON value and manually update the configuration.
Schema changes breaking existing Config Json Modified schema no longer validates existing configuration data Before modifying Config Schema, test with sample JSON to ensure compatibility. When schema changes are necessary, update Config Json simultaneously to maintain compliance. Consider creating a new configuration rather than modifying existing if significant schema changes are required.
Configuration not included in package deployment Configuration not selected for package inclusion When creating packages, explicitly include configurations in the package definition. If using Module and Module Group, ensure all configurations within the module are selected. Verify package contents before deployment.

Best Practices

8. Revision History

Version Date Editor Description
1.0 2024-12-27 Craig Scott Initial Release