diff --git a/src/webui/service/main/DescriptorTools.py b/src/webui/service/main/DescriptorTools.py
index 31bb793d82be604a96a4d67f9fd40a6b4cbc1579..094be2f7d0cfd69ddb5cddc2238e8cec64c75daa 100644
--- a/src/webui/service/main/DescriptorTools.py
+++ b/src/webui/service/main/DescriptorTools.py
@@ -12,8 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import copy
-from typing import Dict, List, Optional, Tuple
+import copy, json
+from typing import Dict, List, Optional, Tuple, Union
 
 def get_descriptors_add_contexts(contexts : List[Dict]) -> List[Dict]:
     contexts_add = copy.deepcopy(contexts)
@@ -49,6 +49,16 @@ def get_descriptors_add_slices(slices : List[Dict]) -> List[Dict]:
         slices_add.append(slice_copy)
     return slices_add
 
+TypeResourceValue = Union[str, int, bool, float, dict, list]
+def format_custom_config_rules(config_rules : List[Dict]) -> List[Dict]:
+    for config_rule in config_rules:
+        if 'custom' not in config_rule: continue
+        custom_resource_value : TypeResourceValue = config_rule['custom']['resource_value']
+        if isinstance(custom_resource_value, (dict, list)):
+            custom_resource_value = json.dumps(custom_resource_value, sort_keys=True, indent=0)
+            config_rule['custom']['resource_value'] = custom_resource_value
+    return config_rules
+
 def split_devices_by_rules(devices : List[Dict]) -> Tuple[List[Dict], List[Dict]]:
     devices_add = []
     devices_config = []
diff --git a/src/webui/service/main/routes.py b/src/webui/service/main/routes.py
index 80dfb30c2bdd8d75937611bf0dfbd8e3426e4847..9b1b088579c5b01218316bf1c96b5208ff854609 100644
--- a/src/webui/service/main/routes.py
+++ b/src/webui/service/main/routes.py
@@ -21,7 +21,7 @@ from device.client.DeviceClient import DeviceClient
 from service.client.ServiceClient import ServiceClient
 from slice.client.SliceClient import SliceClient
 from webui.service.main.DescriptorTools import (
-    get_descriptors_add_contexts, get_descriptors_add_services, get_descriptors_add_slices,
+    format_custom_config_rules, get_descriptors_add_contexts, get_descriptors_add_services, get_descriptors_add_slices,
     get_descriptors_add_topologies, split_devices_by_rules)
 from webui.service.main.forms import ContextForm, DescriptorForm
 
@@ -84,6 +84,23 @@ def process_descriptors(descriptors):
     slices      = descriptors.get('slices'     , [])
     connections = descriptors.get('connections', [])
 
+    # Format CustomConfigRules in Devices, Services and Slices provided in JSON format
+    for device in devices:
+        config_rules = device.get('device_config', {}).get('config_rules', [])
+        config_rules = format_custom_config_rules(config_rules)
+        device['device_config']['config_rules'] = config_rules
+
+    for service in services:
+        config_rules = service.get('service_config', {}).get('config_rules', [])
+        config_rules = format_custom_config_rules(config_rules)
+        service['service_config']['config_rules'] = config_rules
+
+    for slice in slices:
+        config_rules = slice.get('slice_config', {}).get('config_rules', [])
+        config_rules = format_custom_config_rules(config_rules)
+        slice['slice_config']['config_rules'] = config_rules
+
+
     # Context and Topology require to create the entity first, and add devices, links, services, slices, etc. in a
     # second stage.
     contexts_add = get_descriptors_add_contexts(contexts)