App Configuration User Guide
Introduction
This document serves as a basic user guide for configuring the App Configuration feature.
The App Configuration system enables dynamic screen rendering through configuration, allowing application behavior and UI structure to be controlled without changing application code. Screens, modules, fields, and supporting UI elements are all driven by predefined configuration schemas.
To function correctly, the App Configuration feature relies on a well-defined set of configurations. These configurations act as the contract between the configuration data and the UI rendering layer. Any new screen, module, field type, or UI extension must follow this structure to ensure it is correctly interpreted and rendered by the application.
MDMS Configurations to be set up:-
HCM-ADMIN-CONSOLE.NewBaseAppConfig
Hold template config of screens and flows for specific module and project type
HCM-ADMIN-CONSOLE.FieldTypeMappingConfig
List of types of field and their fieldType used to render on the screen and its meta data like type and format
HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig
List of meta properties to be configured for each types of field.
How to add new module in App Configuration
To add new module in add configuration. You need to add config in HCM-ADMIN-CONSOLE.NewBaseAppConfig
EXAMPLE
{
"name": "REGISTRATION", // name of the module
"order": 1, // order of flow
"active": true, // if true then appear on the app config screen
"project": "MR-DN", // type of project for which module definition is there
"version": 1, // version of the module, it will be updated whenever configured from App configuration
"disabled": false, // is disabled it will be not selectable
"initialPage": "searchBeneficiary" // deciding the first page of the flow
"flows": [
{
"screenType": "TEMPLATE",
...
},
{
"screenType": "FORM",
...
}
]
}Screen Type can be Template or Form.
Template Screen type is defined for those screen where data capturing part is not happening and is used for navigation and it has its own defined layout like Inbox, Search Screen
Form Screen type is defined for those where data capturing is happening and has basic layout like Create Screen
Template Screen Example
Form Screen Example
How to Add a New Field Type
Field Types define how a field configuration is translated into a UI component. Every field rendered in the App Configuration UI is resolved using the Field Type Mapping Configuration.
The system reads the field’s type and format from the screen configuration and uses the FieldTypeMappingConfig to determine:
Which UI component should be rendered
How the field should behave
What metadata it supports
All field type mappings are defined in: HCM-ADMIN-CONSOLE.FieldTypeMappingConfig
Field Type Resolution Flow
A screen configuration defines a field using
typeandformatThe App Configuration engine looks up a matching entry in
FieldTypeMappingConfigThe mapped
fieldTypedetermines which UI component is renderedMetadata is passed to the component for rendering and validation
Basic Field Type Configuration Structure
Each field type mapping must define:
type
Logical field type used in screen configuration
order
Rendering priority when multiple mappings exist
metadata
Criteria used to match the field configuration
fieldType
UI component identifier used by the renderer
Adding a Custom Component Field Type
For advanced use cases, custom UI components can be introduced as field types.
Use
componentas thefieldType, and specify the component name as the key:
Create a React component whose name matches the
componentvalueRegister the custom component in the component registry.
Common Issues and Troubleshooting
Field not rendering
Missing or incorrect FieldTypeMappingConfig
Blank screen
Component not registered in ComponentRegistry
Wrong component rendered
Conflicting type + format mappings
Validation not working
Metadata mismatch
How to Add Drawer Panel Properties
Drawer Panels are used to configure field-level properties from the App Configuration UI. These properties appear when a user selects a field and opens the properties drawer.
All drawer panel configurations are managed through a single centralized configuration:
HCM-ADMIN-CONSOLE.FieldPropertiesPanelConfig
This configuration defines:
What properties are editable for a field
On which tab (Content / Validation) the property appears
Which field types the property applies to
How the property behaves in the UI (toggle, input, conditional fields, etc.)
Important Design Principle
There is only one object that holds all drawer property configurations.
To add a new property:
You must edit this existing object
Add the property definition inside either:
contentarray → for UI/content-related propertiesvalidationarray → for validation-related properties
The array you choose determines which tab the property appears under in the drawer panel. If you want to introduce new tab you can do that.
Drawer Property Resolution Flow
User selects a field in App Configuration
Drawer panel opens
System reads
FieldPropertiesPanelConfigProperties are filtered based on:
Active tab (Content / Validation)
Field type (
visibilityEnabledFor)
Matching properties are rendered dynamically in the drawer
Basic Drawer Property Configuration Structure
Each drawer property configuration supports the following keys:
id
Unique identifier for the property
label
Display label shown in the drawer
order
Position of the property within the tab
bindTo
Field configuration key this property updates
fieldType
UI control type rendered in the drawer
defaultValue
Default value assigned when property is enabled
conditionalField
Field(s) shown conditionally
showFieldOnToggle
Controls conditional rendering
visibilityEnabledFor
Field types for which this property is available
Example: Adding a Help Text Property
To allow configuration of help text for supported field types, add the following entry to the content array of FieldPropertiesPanelConfig:
How This Reflects in the UI
Property appears under the Content tab in the drawer
A toggle labeled Help Text is shown
When enabled, a textarea input appears
The entered value is stored in the field’s
helpTextkeyProperty is only visible for supported field types
Adding Validation Properties
To add validation-related properties:
Place the configuration inside the
validationarray instead ofcontentBind to validation-specific keys (e.g.,
mandatory,minLength,pattern)Use
visibilityEnabledForto restrict applicability
Dependent Fields (Display Logic)
The display logic property allows adding conditional display logic to form fields. When enabled, you configure an expression that determines whether this field is visible based on other fields' values.
Where it's stored in config: field.visibilityCondition.expression
How it works:
In the Validation tab, toggle ON the display logic property
A condition builder UI appears
You select a field from the current page, a comparison operator, and a value
The expression is stored as a string like "fieldName == 'someValue'"
Supported field types for dependency: checkbox, numeric, date, dob, select, dropdown, idPopulator, mobileNumber, number, textarea, text, latLng, radio, administrativeArea, searchableDropdown
Example config result:
{ "type": "string", "format": "text", "fieldName": "referralReason", "label": "REFERRAL_REASON", "visibilityCondition": { "expression": "referralRequired == true" } }
Best Practices
Keep
idandbindTovalues consistentUse
visibilityEnabledForto avoid invalid configurationsPrefer toggles for optional properties
Avoid duplicating
bindTokeys across propertiesMaintain logical
ordervalues for usability
Common Issues and Troubleshooting
Property not visible
Field type not included in visibilityEnabledFor
Value not saved
Incorrect bindTo key
Conditional field not showing
showFieldOnToggle missing or false
Property in wrong tab
Added to incorrect array (content vs validation)
Summary
The App Configuration system is designed to dynamically drive application UI and behavior through configuration, enabling scalable and extensible screen management without code changes.
This guide covered the core building blocks required to extend App Configuration safely and correctly, including:
Module Configuration How to define new modules, control flow order, enable or disable visibility, and configure entry points for dynamic screens.
Screen and Flow Configuration How FORM and TEMPLATE screens are structured, how header, body, and footer sections are configured, and how navigation and actions are handled.
Field Type Configuration How fields are rendered using
FieldTypeMappingConfig, howtypeandformatmap to UI components, and how to introduce custom components throughComponentRegistry.Drawer Panel Properties Configuration How field-level properties are managed centrally through
FieldPropertiesPanelConfig, how properties are grouped under Content and Validation tabs, and how visibility and conditional rendering are controlled per field type.
Together, these configurations form a contract between configuration data and the UI rendering engine. Any new capability—whether a field, validation, screen, or UI extension—must follow these patterns to ensure consistency, maintainability, and predictable behavior.
By adhering to the rules and best practices outlined in this guide, developers and configurators can:
Extend the application confidently
Avoid breaking existing screens
Maintain backward compatibility
Keep configuration scalable and easy to manage
This document should be used as the primary reference when introducing or modifying App Configuration features.
Last updated
Was this helpful?