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:-

  1. HCM-ADMIN-CONSOLE.NewBaseAppConfig

    Hold template config of screens and flows for specific module and project type

  2. 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

  3. 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

  1. A screen configuration defines a field using type and format

  2. The App Configuration engine looks up a matching entry in FieldTypeMappingConfig

  3. The mapped fieldType determines which UI component is rendered

  4. Metadata is passed to the component for rendering and validation

Basic Field Type Configuration Structure

Each field type mapping must define:

Key
Description

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.

  1. Use component as the fieldType, and specify the component name as the key:

  1. Create a React component whose name matches the component value

  2. Register the custom component in the component registry.

Common Issues and Troubleshooting

Issue
Cause

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:

    • content array → for UI/content-related properties

    • validation array → 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

  1. User selects a field in App Configuration

  2. Drawer panel opens

  3. System reads FieldPropertiesPanelConfig

  4. Properties are filtered based on:

    • Active tab (Content / Validation)

    • Field type (visibilityEnabledFor)

  5. Matching properties are rendered dynamically in the drawer

Basic Drawer Property Configuration Structure

Each drawer property configuration supports the following keys:

Key
Description

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 helpText key

  • Property is only visible for supported field types

Adding Validation Properties

To add validation-related properties:

  • Place the configuration inside the validation array instead of content

  • Bind to validation-specific keys (e.g., mandatory, minLength, pattern)

  • Use visibilityEnabledFor to 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:

  1. In the Validation tab, toggle ON the display logic property

  2. A condition builder UI appears

  3. You select a field from the current page, a comparison operator, and a value

  4. 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 id and bindTo values consistent

  • Use visibilityEnabledFor to avoid invalid configurations

  • Prefer toggles for optional properties

  • Avoid duplicating bindTo keys across properties

  • Maintain logical order values for usability

Common Issues and Troubleshooting

Issue
Cause

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, how type and format map to UI components, and how to introduce custom components through ComponentRegistry.

  • 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?