diff --git a/htdocs/WebApplications/CustomizableApp/ViewModels/ViewModel_UnionTable.js b/htdocs/WebApplications/CustomizableApp/ViewModels/ViewModel_UnionTable.js
index d1e07f0df891d5e0bcffeb8d8460016e509927fc..abdd7964b6a2c38c0f8d4c74d084b9aa09a12b86 100644
--- a/htdocs/WebApplications/CustomizableApp/ViewModels/ViewModel_UnionTable.js
+++ b/htdocs/WebApplications/CustomizableApp/ViewModels/ViewModel_UnionTable.js
@@ -1,7 +1,7 @@
-// Copyright (c) 2000-2025 Ericsson Telecom AB Telecom AB                                            //
+// Copyright (c) 2000-2023 Ericsson Telecom AB Telecom AB                                                       //
 // All rights reserved. This program and the accompanying materials are made available under the     //
 // terms of the Eclipse Public License v2.0 which accompanies this distribution, and is available at //
-// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html                                        //
+// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html                                                         //
 ///////////////////////////////////////////////////////////////////////////////////////////////////////
 function CViewModel_UnionTable(aViewModel, aOptions) {
     "use strict";
@@ -9,9 +9,10 @@ function CViewModel_UnionTable(aViewModel, aOptions) {
     /** private members */
     var mViewModel = aViewModel;
     var mOptions = aOptions;
+    //var mRq = mViewModel.getRequest();
     var mBinder;
     var mResponseDataPaths = [];
-    var mSelections = []; // mSelections is a list of references to objects, each containing a field named "selection"
+    var mSelections = []; // mSelectionss is a list of references to objects, each containing a field named "selection"
     var mThis = this;
     var mEnlistElementName = mOptions.enlistElementName;
     if (mEnlistElementName === undefined)
@@ -21,7 +22,7 @@ function CViewModel_UnionTable(aViewModel, aOptions) {
 
     this.setSelectionToControl = function (aSelection) {
         /** aSelection is a reference to an object containing a "selection" field */
-        mSelections.push(aSelection);
+        mSelections.push(aSelection);
     };
 
     this.setReponseDataPath = function (aExpectedReponseDataIndex, aReponseDataPath) {
@@ -29,7 +30,7 @@ function CViewModel_UnionTable(aViewModel, aOptions) {
     };
 
     this.setBinder = function (aBinder) {
-        mBinder = aBinder;
+        mBinder = aBinder;
     };
 
     /** public functions - Interface for views */
@@ -64,7 +65,7 @@ function CViewModel_UnionTable(aViewModel, aOptions) {
                 "heading": header[i],
                 "elementIndex": i
             };
-        }
+        }
         return header;
     };
 
@@ -72,19 +73,21 @@ function CViewModel_UnionTable(aViewModel, aOptions) {
         return mViewModel.getRequestFromPath(mResponseDataPaths[0]).getData.element;
     };
 
-    this.getResponseElement = function (aFullTableSelection) {
+    this.getResponseElement = function (aReponseDataPath, aFullTableSelection) {
         var lElement;
-        if (aFullTableSelection.path) {
-            var pathIdx = 0;
-            lElement = mViewModel.getResponseElement();
-            if (lElement != undefined) {
-                lElement = lElement[aFullTableSelection.path[pathIdx]];
-            }
+        if (aFullTableSelection) {
+            aFullTableSelection.parents = [];
+            aFullTableSelection.depth = aReponseDataPath.length;
+            aFullTableSelection.path = aReponseDataPath;
+        }
+        if (aReponseDataPath) {
+            lElement = mViewModel.getResponseElement();
+            if (lElement != undefined) {
+                lElement = lElement[aReponseDataPath[0]];
+            }
             if (lElement) {
-                var lRq = mViewModel.getRequest()[aFullTableSelection.path[pathIdx]];
-
-                // need to select the table data from the path, which is the last two element
-                for (; pathIdx < aFullTableSelection.path.length - 1 && lElement; ++pathIdx) {
+                var lRq = mViewModel.getRequest()[aReponseDataPath[0]];
+                for (var i = 1; i < aReponseDataPath.length && lElement; ++i) {
                     if (lElement.list && lRq.getData.selection && lRq.getData.selection.length > 0) {
                         if (aFullTableSelection) {
                             aFullTableSelection.depth--;
@@ -96,76 +99,67 @@ function CViewModel_UnionTable(aViewModel, aOptions) {
                             aFullTableSelection.path = aFullTableSelection.path.slice(1);
                         }
                         if (lElement.list[lRq.getData.selection[0]] && lElement.list[lRq.getData.selection[0]].node.childVals) {
-                            lElement = lElement.list[lRq.getData.selection[0]].node.childVals[aFullTableSelection.path[pathIdx]];
+                            lElement = lElement.list[lRq.getData.selection[0]].node.childVals[aReponseDataPath[i]];
                         } else {
                             lElement = undefined;
                             break;
                         }
+                    } else if (!lRq.getData.selection || lRq.getData.selection.length === 0) {
+                        /**/
                     } else if (lElement.node && lElement.node.childVals) {
-                        aFullTableSelection.path.shift();
-                        aFullTableSelection.depth--;
-                        lElement = lElement.node.childVals[aFullTableSelection.path[pathIdx]];
-                    } else if (!lRq.getData.selection || lRq.getData.selection.length === 0) {
-                        // intentionally blank
+                        lElement = lElement.node.childVals[aReponseDataPath[i]];
                     } else
                         lElement = {
                             "error" : "cannot determine node"
                         };
-                    if (lRq.getData.children) {
-                      lRq = lRq.getData.children[aFullTableSelection.path[pathIdx]];
-                    }
+                    if (lRq.getData.children)
+                        lRq = lRq.getData.children[aReponseDataPath[i]];
                 }
             }
-        }
+        }
         return lElement;
     };
 
     this.getTable = function () {
-        var pathCopy = mcopy(mResponseDataPaths[0]);
-        var aFullTableSelection = {
-          parents: [],
-          depth: pathCopy.length,
-          path: pathCopy
-        };
-
-        var response = mThis.getResponseElement(aFullTableSelection);
+        var aFullTableSelection = {};
+        var response = mThis.getResponseElement(mResponseDataPaths[0], aFullTableSelection);
         return {
             selection : mSelections[0] ? mSelections[0].selection : undefined,
             table :  (response === undefined) ? [] : flattenResponseElement(response.list, aFullTableSelection.depth, 0, aFullTableSelection.parents, aFullTableSelection.path.slice(1))
         };
     };
-
+    
     this.setValue = function() {};
 
     /** private functions */
 
-    function flattenResponseElement(arr, limit, depth, parents, path) {
+    function flattenResponseElement(arr, limit, depth, parents, path) {
         if (arr) {
-          limit = limit || 0;
-          depth = depth || 0;
-          parents = parents || [];
-          path = path || [];
-          return arr.reduce(function _reduce(flat, toFlatten) {
-              if (limit === depth && toFlatten.node)
-                  return flat.concat({"val": toFlatten.node.val});
-              else if (limit === depth && toFlatten.list)
-                  return flat.concat([flattenResponseElement(toFlatten.list, limit, depth, parents, path)].join());
-              else if (limit === depth + 1 && toFlatten.node) {
-                  if (mEnlistElementName)
-                      return flat.concat([parents.concat([{"val": toFlatten.node.val}].concat(flattenResponseElement(toFlatten.node.childVals, limit, depth + 1, [], path)))]);
-                  else
-                      return flat.concat([flattenResponseElement(toFlatten.node.childVals, limit, depth + 1, [], path)]);
-              } else if (Array.isArray(toFlatten))
-                  return flat.concat(flattenResponseElement(toFlatten, limit, depth, parents, path));
-              else if (toFlatten.node && toFlatten.node.childVals && limit !== depth)
-                  return flat.concat(flattenResponseElement([toFlatten.node.childVals[path[depth]]], limit, depth + 1, parents.concat([{"val": toFlatten.node.val}]), path));
-              else if (toFlatten.node && toFlatten.node.childVals)
-                  return flat.concat(flattenResponseElement(toFlatten.node.childVals, limit, depth + 1, parents.concat([{"val": toFlatten.node.val}]), path));
-              else if (toFlatten.list)
-                  return flat.concat(flattenResponseElement(toFlatten.list, limit, depth, parents, path));
-              else
-                  console.error("flattenResponseElement met an unexpected condition. Reason: The response object is nonconformant OR not all parents have a selection!");
-          }, []);
+        limit = limit || 0;
+        depth = depth || 0;
+        parents = parents || [];
+        path = path || [];
+        return arr.reduce(function _reduce(flat, toFlatten) {
+            if (limit === depth && toFlatten.node)
+                return flat.concat({"val": toFlatten.node.val});
+            else if (limit === depth && toFlatten.list)
+                return flat.concat([flattenResponseElement(toFlatten.list, limit, depth, parents, path)].join());
+            else if (limit === depth + 1 && toFlatten.node) {
+                if (mEnlistElementName)
+                    return flat.concat([parents.concat([{"val": toFlatten.node.val}].concat(flattenResponseElement(toFlatten.node.childVals, limit, depth + 1, [], path)))]);
+                else
+                    return flat.concat([flattenResponseElement(toFlatten.node.childVals, limit, depth + 1, [], path)]);
+            } else if (Array.isArray(toFlatten))
+                return flat.concat(flattenResponseElement(toFlatten, limit, depth, parents, path));
+            else if (toFlatten.node && toFlatten.node.childVals && limit !== depth)
+                return flat.concat(flattenResponseElement([toFlatten.node.childVals[path[depth]]], limit, depth + 1, parents.concat([{"val": toFlatten.node.val}]), path));
+            else if (toFlatten.node && toFlatten.node.childVals)
+                return flat.concat(flattenResponseElement(toFlatten.node.childVals, limit, depth + 1, parents.concat([{"val": toFlatten.node.val}]), path));
+            else if (toFlatten.list)
+                return flat.concat(flattenResponseElement(toFlatten.list, limit, depth, parents, path));
+            else
+                console.error("flattenResponseElement met an unexpected condition. Reason: The response object is nonconformant OR not all parents have a selection!");
+        }, []);
         }
     }
 }