diff --git a/sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts b/sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts
index dbe95e0..1db66c0 100644
--- a/sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts
+++ b/sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts
@@ -89,7 +89,8 @@
 
 const getReferencedDataList = async (refPath: string, dataPath: string, modules: { [name: string]: Module }, views: ViewSpecification[]) => {
   const pathParts = splitVPath(refPath, /(?:(?:([^\/\:]+):)?([^\/]+))/g);  // 1 = opt: namespace / 2 = property
-  let referencedModule = modules[pathParts[0][0]];
+  const defaultNS = pathParts[0][0];
+  let referencedModule = modules[defaultNS];
 
   let dataMember: string;
   let view: ViewSpecification;
@@ -121,14 +122,17 @@
             throw new Error(`Server Error. Status: [${restResult.status}]\n${message || restResult.message || ''}`);
           }
 
-          let dataRaw = restResult.data[dataMember!];
+          let dataRaw = restResult.data[`${defaultNS}:${dataMember!}`];
+          if (dataRaw === undefined) {
+              dataRaw = restResult.data[dataMember!];
+          }
           dataRaw = dataRaw instanceof Array
             ? dataRaw[0]
             : dataRaw;
 
           data = dataRaw && dataRaw[viewElement.label] || [];
           const keys: string[] = data.map((entry: { [key: string]: any } )=> entry[viewElement.key!]);
-          resultingDataUrls.push(...keys.map(key => `${dataUrl}/${viewElement.label.replace(/\//ig, "%2F")}/${key.replace(/\//ig, "%2F")}`));
+          resultingDataUrls.push(...keys.map(key => `${dataUrl}/${viewElement.label.replace(/\//ig, "%2F")}=${key.replace(/\//ig, "%2F")}`));
         }
         dataMember = viewElement.label;
       } else {
@@ -149,7 +153,10 @@
           const message = restResult.data && restResult.data.errors && restResult.data.errors.error && restResult.data.errors.error[0] && restResult.data.errors.error[0]["error-message"] || "";
           throw new Error(`Server Error. Status: [${restResult.status}]\n${message || restResult.message || ''}`);
         }
-        let dataRaw = restResult.data[dataMember!];
+        let dataRaw = restResult.data[`${defaultNS}:${dataMember!}`];
+        if (dataRaw === undefined) {
+            dataRaw = restResult.data[dataMember!];
+        }
         dataRaw = dataRaw instanceof Array
           ? dataRaw[0]
           : dataRaw;
@@ -227,7 +234,7 @@
 export const updateViewActionAsyncCreator = (vPath: string) => async (dispatch: Dispatch, getState: () => IApplicationStoreState) => {
   const pathParts = splitVPath(vPath, /(?:([^\/\["]+)(?:\[([^\]]*)\])?)/g); // 1 = property / 2 = optional key
   const { configuration: { deviceDescription: { nodeId, modules, views } }, framework: { navigationState } } = getState();
-  let dataPath = `/restconf/config/network-topology:network-topology/topology/topology-netconf/node/${nodeId}/yang-ext:mount`;
+  let dataPath = `/rests/data/network-topology:network-topology/topology=topology-netconf/node=${nodeId}/yang-ext:mount`;
 
   let inputViewSpecification: ViewSpecification | undefined = undefined;
   let outputViewSpecification: ViewSpecification | undefined = undefined;
@@ -302,7 +309,11 @@
         }
         extractList = true;
       } else {
-        dataPath += `/${property}${key ? `/${key.replace(/\//ig, "%2F")}` : ""}`;
+        // normal case 
+        dataPath += `/${property}${key ? `=${key.replace(/\//ig, "%2F")}` : ""}`;
+
+        // in case of the root element the required namespace will be added later,
+        // while extracting the data
         dataMember = namespace === defaultNS
           ? viewElement.label
           : `${namespace}:${viewElement.label}`;
@@ -352,7 +363,11 @@
         const message = restResult.data.errors && restResult.data.errors.error && restResult.data.errors.error[0] && restResult.data.errors.error[0]["error-message"] || "";
         throw new Error(`Server Error. Status: [${restResult.status}]\n${message}`);
       } else {
-        data = restResult.data[dataMember!]; // extract dataMember
+        // https://tools.ietf.org/html/rfc7951#section-4 the root element may countain a namesapce or not !  
+        data = restResult.data[`${defaultNS}:${dataMember!}`];
+        if (data === undefined) {
+           data = restResult.data[dataMember!]; // extract dataMember w/o namespace
+        }
       }
 
       // extract the first element list[key]
@@ -405,7 +420,7 @@
 export const updateDataActionAsyncCreator = (vPath: string, data: any) => async (dispatch: Dispatch, getState: () => IApplicationStoreState) => {
   const pathParts = splitVPath(vPath, /(?:([^\/\["]+)(?:\[([^\]]*)\])?)/g); // 1 = property / 2 = optional key
   const { configuration: { deviceDescription: { nodeId, views } } } = getState();
-  let dataPath = `/restconf/config/network-topology:network-topology/topology/topology-netconf/node/${nodeId}/yang-ext:mount`;
+  let dataPath = `/rests/data/network-topology:network-topology/topology=topology-netconf/node=${nodeId}/yang-ext:mount`;
   let viewSpecification: ViewSpecification = views[0];
   let viewElement: ViewElement;
   let dataMember: string;
@@ -445,7 +460,7 @@
         }
       }
 
-      dataPath += `/${property}${key ? `/${key.replace(/\//ig, "%2F")}` : ""}`;
+      dataPath += `/${property}${key ? `=${key.replace(/\//ig, "%2F")}` : ""}`;
       dataMember = viewElement.label;
       embedList = false;
 
@@ -466,7 +481,7 @@
 
     // do not extract root member (0)
     if (viewSpecification && viewSpecification.id !== "0") {
-      const updateResult = await restService.setConfigData(dataPath, { [dataMember!]: data }); // extractDataMember
+      const updateResult = await restService.setConfigData(dataPath, { [`${defaultNS}:${dataMember!}`]: data }); // addDataMember using defaultNS
       if (updateResult.status < 200 || updateResult.status > 299) {
         const message = updateResult.data && updateResult.data.errors && updateResult.data.errors.error && updateResult.data.errors.error[0] && updateResult.data.errors.error[0]["error-message"] || "";
         throw new Error(`Server Error. Status: [${updateResult.status}]\n${message || updateResult.message || ''}`);
@@ -499,7 +514,7 @@
 export const removeElementActionAsyncCreator = (vPath: string) => async (dispatch: Dispatch, getState: () => IApplicationStoreState) => {
   const pathParts = splitVPath(vPath, /(?:([^\/\["]+)(?:\[([^\]]*)\])?)/g); // 1 = property / 2 = optional key
   const { configuration: { deviceDescription: { nodeId, views } } } = getState();
-  let dataPath = `/restconf/config/network-topology:network-topology/topology/topology-netconf/node/${nodeId}/yang-ext:mount`;
+  let dataPath = `/rests/data/network-topology:network-topology/topology=topology-netconf/node=${nodeId}/yang-ext:mount`;
   let viewSpecification: ViewSpecification = views[0];
   let viewElement: ViewElement;
 
@@ -529,7 +544,7 @@
         }
       }
 
-      dataPath += `/${property}${key ? `/${key.replace(/\//ig, "%2F")}` : ""}`;
+      dataPath += `/${property}${key ? `=${key.replace(/\//ig, "%2F")}` : ""}`;
 
       if (viewElement && "viewId" in viewElement) {
         viewSpecification = views[+viewElement.viewId];
@@ -555,7 +570,7 @@
 export const executeRpcActionAsyncCreator = (vPath: string, data: any) => async (dispatch: Dispatch, getState: () => IApplicationStoreState) => {
   const pathParts = splitVPath(vPath, /(?:([^\/\["]+)(?:\[([^\]]*)\])?)/g); // 1 = property / 2 = optional key
   const { configuration: { deviceDescription: { nodeId, views }, viewDescription: oldViewDescription } } = getState();
-  let dataPath = `/restconf/operations/network-topology:network-topology/topology/topology-netconf/node/${nodeId}/yang-ext:mount`;
+  let dataPath = `/rests/operations/network-topology:network-topology/topology=topology-netconf/node=${nodeId}/yang-ext:mount`;
   let viewSpecification: ViewSpecification = views[0];
   let viewElement: ViewElement;
   let dataMember: string;
@@ -595,7 +610,7 @@
       //   }
       }
 
-      dataPath += `/${property}${key ? `/${key.replace(/\//ig, "%2F")}` : ""}`;
+      dataPath += `/${property}${key ? `=${key.replace(/\//ig, "%2F")}` : ""}`;
       dataMember = viewElement.label;
       embedList = false;
 
@@ -637,8 +652,7 @@
         const message = updateResult.data && updateResult.data.errors && updateResult.data.errors.error && updateResult.data.errors.error[0] && updateResult.data.errors.error[0]["error-message"] || "";
         throw new Error(`Server Error. Status: [${updateResult.status}]\n${message || updateResult.message || ''}`);
       }
-      const viewData = { ...oldViewDescription.viewData, output: updateResult.data || null};
-      dispatch(new UpdatOutputData(viewData));
+      dispatch(new UpdatOutputData(updateResult.data));
     } else {
       throw new Error(`There is NO RPC specified.`);
     }
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/services/restServices.ts b/sdnr/wt/odlux/apps/configurationApp/src/services/restServices.ts
index b260f1f..eb2c67c 100644
--- a/sdnr/wt/odlux/apps/configurationApp/src/services/restServices.ts
+++ b/sdnr/wt/odlux/apps/configurationApp/src/services/restServices.ts
@@ -23,10 +23,10 @@
 
 class RestService {
   public async getCapabilitiesByMoutId(nodeId: string): Promise<{ "capabilityOrigin": string, "capability": string }[] | null> {
-    const path = `/restconf/operational/network-topology:network-topology/topology/topology-netconf/node/${nodeId}`;
-    const capabilitiesResult = await requestRest<{ node: { "node-id": string, "netconf-node-topology:available-capabilities": { "available-capability": { "capabilityOrigin": string, "capability": string }[] }}[] }>(path, { method: "GET" });
-    return capabilitiesResult && capabilitiesResult.node && capabilitiesResult.node.length > 0 &&
-      capabilitiesResult.node[0]["netconf-node-topology:available-capabilities"]["available-capability"].map(obj => convertPropertyNames(obj, replaceHyphen)) || null;
+    const path = `/rests/data/network-topology:network-topology/topology=topology-netconf/node=${nodeId}`;
+    const capabilitiesResult = await requestRest<{"network-topology:node": {"node-id": string, "netconf-node-topology:available-capabilities": { "available-capability": { "capability-origin": string, "capability": string }[] }}[] }>(path, { method: "GET" });
+    return capabilitiesResult && capabilitiesResult["network-topology:node"] && capabilitiesResult["network-topology:node"].length > 0 &&
+      capabilitiesResult["network-topology:node"][0]["netconf-node-topology:available-capabilities"]["available-capability"].map<any>(obj => convertPropertyNames(obj, replaceHyphen)) || null;
   }
 
   public async getMountedNetworkElementByMountId(nodeId: string): Promise<NetworkElementConnection | null> {
@@ -34,13 +34,13 @@
     // const connectedNetworkElement = await requestRest<NetworkElementConnection>(path, { method: "GET" });
     // return connectedNetworkElement || null;
 
-    const path = "/restconf/operations/data-provider:read-network-element-connection-list";
-    const body = { "input": { "filter": [{ "property": "node-id", "filtervalue": nodeId }], "sortorder": [], "pagination": { "size": 1, "page": 1 } } };
-    const networkElementResult = await requestRest<{ output: { data: NetworkElementConnection[] } }>(path, { method: "POST", body: JSON.stringify(body) });
-    return networkElementResult && networkElementResult.output && networkElementResult.output.data &&
-      networkElementResult.output.data.map(obj => convertPropertyNames(obj, replaceHyphen))[0] || null;
+    const path = "/rests/operations/data-provider:read-network-element-connection-list";
+    const body = { "data-provider:input": { "filter": [{ "property": "node-id", "filtervalue": nodeId }], "sortorder": [], "pagination": { "size": 1, "page": 1 } } };
+    const networkElementResult = await requestRest<{ "data-provider:output": { data: NetworkElementConnection[] } }>(path, { method: "POST", body: JSON.stringify(body) });
+    return networkElementResult && networkElementResult["data-provider:output"] && networkElementResult["data-provider:output"].data &&
+      networkElementResult["data-provider:output"].data.map(obj => convertPropertyNames(obj, replaceHyphen))[0] || null;
   }
-
+ 
   /** Reads the config data by restconf path.
   * @param path The restconf path to be used for read.
   * @returns The data.
diff --git a/sdnr/wt/odlux/apps/configurationApp/webpack.config.js b/sdnr/wt/odlux/apps/configurationApp/webpack.config.js
index dccf349..329eb00 100644
--- a/sdnr/wt/odlux/apps/configurationApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/configurationApp/webpack.config.js
@@ -107,8 +107,11 @@
         ]
     ],
 
+     watchOptions: {
+       ignored: /node_modules/
+     },
+
     devServer: {
-      public: "http://localhost:3100",
       contentBase: frameworkPath,
 
       compress: true,
@@ -125,31 +128,39 @@
       stats: {
         colors: true
       },
-      proxy: {
-        "/oauth2/": {
-          target: "http://localhost:48181",
-          secure: false
-        },
+       proxy: {
         "/yang-schema/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
+          secure: false
+        },   
+        "/oauth2/": {
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/database/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/restconf/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
+          secure: false
+        },
+        "/rests/": {
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/help/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
+          secure: false
+        },
+        "/tree/": {
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/websocket": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           ws: true,
-          changeOrigin: false,
+          changeOrigin: true,
           secure: false
         }
       }
diff --git a/sdnr/wt/odlux/apps/connectApp/src/services/connectService.ts b/sdnr/wt/odlux/apps/connectApp/src/services/connectService.ts
index 41449e8..2aa9e39 100644
--- a/sdnr/wt/odlux/apps/connectApp/src/services/connectService.ts
+++ b/sdnr/wt/odlux/apps/connectApp/src/services/connectService.ts
@@ -33,9 +33,9 @@
    * Inserts a network elements.
    */
   public async createNetworkElement(element: NetworkElementConnection): Promise<NetworkElementConnection | null> {
-    const path = `/restconf/operations/data-provider:create-network-element-connection`;
+    const path = `/rests/operations/data-provider:create-network-element-connection`;
     const result = await requestRest<NetworkElementConnection>(path, {
-      method: "POST", body: JSON.stringify(convertPropertyNames({ input: element }, replaceUpperCase))
+      method: "POST", body: JSON.stringify(convertPropertyNames({ "data-provider:input": element }, replaceUpperCase))
     });
     return result || null;
   }
@@ -44,9 +44,9 @@
   * Updates a network element.
   */
   public async updateNetworkElement(element: UpdateNetworkElement): Promise<NetworkElementConnection | null> {
-    const path = `/restconf/operations/data-provider:update-network-element-connection`;
+    const path = `/rests/operations/data-provider:update-network-element-connection`;
     const result = await requestRest<NetworkElementConnection>(path, {
-      method: "POST", body: JSON.stringify(convertPropertyNames({ input: element }, replaceUpperCase))
+      method: "POST", body: JSON.stringify(convertPropertyNames({ "data-provider:input": element }, replaceUpperCase))
     });
     return result || null;
   }
@@ -58,16 +58,16 @@
     const query = {
       "id": element.id
     };
-    const path = `/restconf/operations/data-provider:delete-network-element-connection`;
+    const path = `/rests/operations/data-provider:delete-network-element-connection`;
     const result = await requestRest<NetworkElementConnection>(path, {
-      method: "POST", body: JSON.stringify(convertPropertyNames({ input: query }, replaceUpperCase))
+      method: "POST", body: JSON.stringify(convertPropertyNames({ "data-provider:input": query }, replaceUpperCase))
     });
     return result || null;
   }
 
   /** Mounts network element. */
   public async mountNetworkElement(networkElement: NetworkElementConnection): Promise<boolean> {
-    const path = 'restconf/config/network-topology:network-topology/topology/topology-netconf/node/' + networkElement.nodeId;
+    const path = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=' + networkElement.nodeId;
     const mountXml = [
       '<node xmlns="urn:TBD:params:xml:ns:yang:network-topology">',
       `<node-id>${networkElement.nodeId}</node-id>`,
@@ -106,7 +106,7 @@
 
   /** Unmounts a network element by its id. */
   public async unmountNetworkElement(nodeId: string): Promise<boolean> {
-    const path = 'restconf/config/network-topology:network-topology/topology/topology-netconf/node/' + nodeId;
+    const path = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=' + nodeId;
 
     try {
       const result = await requestRest<string>(path, {
@@ -126,7 +126,7 @@
 
   /** Yang capabilities of the selected network elements. */
   public async infoNetworkElement(nodeId: string): Promise<TopologyNode | null> {
-    const path = 'restconf/operational/network-topology:network-topology/topology/topology-netconf/node/' + nodeId;
+    const path = '/rests/operational/network-topology:network-topology/topology=topology-netconf/node=' + nodeId;
     const topologyRequestPomise = requestRest<Topology>(path, { method: "GET" });
 
     return topologyRequestPomise && topologyRequestPomise.then(result => {
@@ -138,9 +138,9 @@
    * Get the connection state of the network element.
    */
   public async getNetworkElementConnectionStatus(element: string): Promise<(ConnectionStatus)[] | null> {
-    const path = `/restconf/operations/data-provider:read-network-element-connection-list`;
+    const path = `/rests/operations/data-provider:read-network-element-connection-list`;
     const query = {
-      "input": {
+      "data-provider:input": {
         "filter": [{
           "property": "node-id",
           "filtervalue": element
@@ -152,13 +152,13 @@
       }
     }
     const result = await requestRest<Result<ConnectionStatus>>(path, { method: "POST", body: JSON.stringify(query) });
-    return result && result.output && result.output.data && result.output.data.map(ne => ({
+    return result && result["data-provider:output"] && result["data-provider:output"].data && result["data-provider:output"].data.map(ne => ({
       status: ne.status
     })) || null;
   }
 
   public async getWebUriExtensionForNetworkElementAsync(ne: string) {
-    const path = 'restconf/config/network-topology:network-topology/topology/topology-netconf/node/' + ne + '/yang-ext:mount/core-model:network-element';
+    const path = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=' + ne + '/yang-ext:mount/core-model:network-element';
     try {
       const result = await requestRest<any>(path, { method: "GET" });
 
@@ -182,7 +182,7 @@
     let webUris: guiCutThrough[] = []
 
     ne.forEach(nodeId => {
-      const path = 'restconf/config/network-topology:network-topology/topology/topology-netconf/node/' + nodeId + '/yang-ext:mount/core-model:network-element';
+      const path = '/rests/data/network-topology:network-topology/topology=topology-netconf/node=' + nodeId + '/yang-ext:mount/core-model:network-element';
 
       // add search request to array
       promises.push(requestRest<any>(path, { method: "GET" })
diff --git a/sdnr/wt/odlux/apps/connectApp/webpack.config.js b/sdnr/wt/odlux/apps/connectApp/webpack.config.js
index b72f5da..7b0a517 100644
--- a/sdnr/wt/odlux/apps/connectApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/connectApp/webpack.config.js
@@ -126,23 +126,27 @@
       },
       proxy: {
         "/oauth2/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/database/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/restconf/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
+          secure: false
+        },
+        "/rests/": {
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/help/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/websocket": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           ws: true,
           changeOrigin: true,
           secure: false
diff --git a/sdnr/wt/odlux/apps/faultApp/src/actions/clearStuckAlarmsAction.ts b/sdnr/wt/odlux/apps/faultApp/src/actions/clearStuckAlarmsAction.ts
index ba1a248..fea500d 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/actions/clearStuckAlarmsAction.ts
+++ b/sdnr/wt/odlux/apps/faultApp/src/actions/clearStuckAlarmsAction.ts
@@ -28,9 +28,9 @@
 }
 
 
-export const clearStuckAlarmAsyncAction = (dispatcher: Dispatch) => async (nodeNames: string[]) => {
-    dispatcher(new AreStuckAlarmsCleared(true))
+export const clearStuckAlarmAsyncAction = (dispatch: Dispatch) => async (nodeNames: string[]) => {
+    dispatch(new AreStuckAlarmsCleared(true))
     const result = await clearStuckAlarms(nodeNames).catch(error => { console.error(error); return undefined });
-    dispatcher(new AreStuckAlarmsCleared(false))
+    dispatch(new AreStuckAlarmsCleared(false))
     return result;
 }
\ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/faultApp/src/components/clearStuckAlarmsDialog.tsx b/sdnr/wt/odlux/apps/faultApp/src/components/clearStuckAlarmsDialog.tsx
index 3b8b9b6..e131fa6 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/components/clearStuckAlarmsDialog.tsx
+++ b/sdnr/wt/odlux/apps/faultApp/src/components/clearStuckAlarmsDialog.tsx
@@ -30,25 +30,29 @@
 const mapDispatch = (dispatcher: IDispatcher) => ({
     clearStuckAlarmsAsync: clearStuckAlarmAsyncAction(dispatcher.dispatch),
     reloadCurrentProblemsAction: () => dispatcher.dispatch(currentProblemsReloadAction)
-})
+});
 
 type clearStuckAlarmsProps = Connect<typeof undefined, typeof mapDispatch> & {
-    numberDevices: Number,
-    mode: ClearStuckAlarmsDialogMode,
-    stuckAlarms: string[]
-    onClose: () => void
+    numberDevices: Number;
+    mode: ClearStuckAlarmsDialogMode;
+    stuckAlarms: string[];
+    onClose: () => void;
 }
 
 type ClearStuckAlarmsState = {
-    clearAlarmsSuccessful: boolean,
-    errormessage: string,
-    unclearedAlarms: string[]
+    clearAlarmsSuccessful: boolean;
+    errormessage: string;
+    unclearedAlarms: string[];
 }
 
 class ClearStuckAlarmsDialogComponent extends React.Component<clearStuckAlarmsProps, ClearStuckAlarmsState>{
     constructor(props: clearStuckAlarmsProps) {
         super(props);
-        this.state = { clearAlarmsSuccessful: true, errormessage: '', unclearedAlarms: [] }
+        this.state = { 
+            clearAlarmsSuccessful: true, 
+            errormessage: '', 
+            unclearedAlarms: [] 
+        };
     }
 
     onClose = (event: React.MouseEvent) => {
@@ -62,19 +66,14 @@
         event.preventDefault();
         const result = await this.props.clearStuckAlarmsAsync(this.props.stuckAlarms);
 
-        if (result) {
-            if (result.output.nodenames) {
-                if (result.output.nodenames.length !== this.props.stuckAlarms.length) { //show errormessage if not all devices were cleared
-                    const undeletedAlarm = this.props.stuckAlarms.filter(item => !result.output.nodenames.includes(item))
-                    const error = "The alarms of the following devices couldn't be refreshed: ";
-                    this.setState({ clearAlarmsSuccessful: false, errormessage: error, unclearedAlarms: undeletedAlarm })
-                    return;
-                }
-            }
-        }
-        else { //show errormessage if no devices were cleared
-            this.setState({ clearAlarmsSuccessful: false, errormessage: "Alarms couldn't be refreshed.", unclearedAlarms: [] })
+        if (result && result["data-provider:output"].nodenames && result["data-provider:output"].nodenames.length !== this.props.stuckAlarms.length) { //show errormessage if not all devices were cleared
+            const undeletedAlarm = this.props.stuckAlarms.filter(item => !result["data-provider:output"].nodenames.includes(item));
+            const error = "The alarms of the following devices couldn't be refreshed: ";
+            this.setState({ clearAlarmsSuccessful: false, errormessage: error, unclearedAlarms: undeletedAlarm });
             return;
+
+        } else { //show errormessage if no devices were cleared
+            this.setState({ clearAlarmsSuccessful: false, errormessage: "Alarms couldn't be refreshed.", unclearedAlarms: [] });
         }
 
         this.props.reloadCurrentProblemsAction();
@@ -132,5 +131,5 @@
     }
 }
 
-const ClearStuckAlarmsDialog = connect(undefined, mapDispatch)(ClearStuckAlarmsDialogComponent)
+const ClearStuckAlarmsDialog = connect(undefined, mapDispatch)(ClearStuckAlarmsDialogComponent);
 export default ClearStuckAlarmsDialog;
diff --git a/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts b/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts
index e03d2b5..5b51a10 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts
+++ b/sdnr/wt/odlux/apps/faultApp/src/handlers/faultAppRootHandler.ts
@@ -67,7 +67,6 @@
   alarmLogEntries: alarmLogEntriesActionHandler,
   currentOpenPanel: currentOpenPanelHandler,
   faultStatus: faultStatusHandler,
-  stuckAlarms: stuckAlarmHandler,
   listenForPartialUpdates: arePartialUpdatesActiveHandler
 };
 
diff --git a/sdnr/wt/odlux/apps/faultApp/src/models/fault.ts b/sdnr/wt/odlux/apps/faultApp/src/models/fault.ts
index c657344..e4e43f1 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/models/fault.ts
+++ b/sdnr/wt/odlux/apps/faultApp/src/models/fault.ts
@@ -61,7 +61,5 @@
 };
 
 export type DeletedStuckAlarms = {
-  output: {
     nodenames: string[]
-  }
 }
\ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/faultApp/src/services/faultStatusService.ts b/sdnr/wt/odlux/apps/faultApp/src/services/faultStatusService.ts
index d3409e0..d1236d2 100644
--- a/sdnr/wt/odlux/apps/faultApp/src/services/faultStatusService.ts
+++ b/sdnr/wt/odlux/apps/faultApp/src/services/faultStatusService.ts
@@ -16,12 +16,12 @@
  * ============LICENSE_END==========================================================================
  */
 import { requestRest } from "../../../../framework/src/services/restService";
-import { Result, PostResponse } from "../../../../framework/src/models/elasticSearch";
+import { Result, SingeResult } from "../../../../framework/src/models/elasticSearch";
 import { FaultType, Faults, DeletedStuckAlarms } from "../models/fault";
 
 
 export const getFaultStateFromDatabase = async (): Promise<FaultType | null> => {
-  const path = 'restconf/operations/data-provider:read-status';
+  const path = 'rests/operations/data-provider:read-status';
   const result = await requestRest<Result<Faults>>(path, { method: "POST" });
 
   let faultType: FaultType = {
@@ -32,8 +32,8 @@
   }
   let faults: Faults[] | null = null;
 
-  if (result && result.output && result.output.data) {
-    faults = result.output.data;
+  if (result && result["data-provider:output"] && result["data-provider:output"].data) {
+    faults = result["data-provider:output"].data;
     faultType = {
       Critical: faults[0].faults.criticals,
       Major: faults[0].faults.majors,
@@ -46,8 +46,8 @@
 }
 
 export const clearStuckAlarms = async (nodeNames: string[]) => {
-  const path = 'restconf/operations/devicemanager:clear-current-fault-by-nodename'
-  const result = await requestRest<DeletedStuckAlarms>(path, { method: 'Post', body: JSON.stringify({ input: { nodenames: nodeNames } }) })
+  const path = 'rests/operations/devicemanager:clear-current-fault-by-nodename'
+  const result = await requestRest<SingeResult<DeletedStuckAlarms>>(path, { method: 'Post', body: JSON.stringify({ input: { nodenames: nodeNames } }) })
   return result;
 
 }
\ No newline at end of file
diff --git a/sdnr/wt/odlux/apps/faultApp/webpack.config.js b/sdnr/wt/odlux/apps/faultApp/webpack.config.js
index c91b1f4..8131c98 100644
--- a/sdnr/wt/odlux/apps/faultApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/faultApp/webpack.config.js
@@ -123,25 +123,29 @@
       stats: {
         colors: true
       },
-      proxy: {
+       proxy: {
         "/oauth2/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/database/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/restconf/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
+          secure: false
+        },
+        "/rests/": {
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/help/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
-        "/websocket/": {
-          target: "http://localhost:48181",
+        "/websocket": {
+          target: "http://10.20.6.29:48181",
           ws: true,
           changeOrigin: true,
           secure: false
diff --git a/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts b/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts
index c8b2478..728f243 100644
--- a/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts
+++ b/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts
@@ -55,7 +55,7 @@
         }, []);
       }
 
-      this.tocNodeCollection = result && mapNodesCollection(result);
+      this.tocNodeCollection = result && mapNodesCollection(result) || null;
     }
     return this.tocNodeCollection || null;
   }
diff --git a/sdnr/wt/odlux/apps/inventoryApp/src/services/inventoryService.ts b/sdnr/wt/odlux/apps/inventoryApp/src/services/inventoryService.ts
index b6025d4..d43d298 100644
--- a/sdnr/wt/odlux/apps/inventoryApp/src/services/inventoryService.ts
+++ b/sdnr/wt/odlux/apps/inventoryApp/src/services/inventoryService.ts
@@ -36,9 +36,9 @@
   }
 
   public async getInventoryEntry(id: string): Promise<InventoryType | undefined> {
-    const path = `/restconf/operations/data-provider:read-inventory-list`;
+    const path = `/rests/operations/data-provider:read-inventory-list`;
     const body = {
-      "input": {
+      "data-provider:input": {
         "filter": [
           { property: "id", filtervalue: id },
         ],
diff --git a/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js b/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js
index d81797c..66c8613 100644
--- a/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/inventoryApp/webpack.config.js
@@ -127,33 +127,33 @@
       },
       proxy: {
         "/oauth2/": {
-          target: "http://localhost:48181",
-          secure: false
-        },
-        "/yang-schema/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/database/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/restconf/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
+          secure: false
+        },
+        "/rests/": {
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/help/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/tree/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/websocket": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           ws: true,
-          changeOrigin: false,
+          changeOrigin: true,
           secure: false
         }
       }
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/src/services/maintenenceService.ts b/sdnr/wt/odlux/apps/maintenanceApp/src/services/maintenenceService.ts
index daa6082..613b478 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/src/services/maintenenceService.ts
+++ b/sdnr/wt/odlux/apps/maintenanceApp/src/services/maintenenceService.ts
@@ -34,7 +34,7 @@
   * Adds or updates one maintenence entry to the backend.
   */
   public async writeMaintenenceEntry(maintenenceEntry: MaintenenceEntry): Promise<PostResponse | null> {
-    const path = `/restconf/operations/data-provider:create-maintenance`;
+    const path = `/rests/operations/data-provider:create-maintenance`;
 
     const query = {
       "id": maintenenceEntry._id,
@@ -45,7 +45,7 @@
       "start": convertToISODateString(maintenenceEntry.start)
     };
 
-    const result = await requestRest<PostResponse>(path, { method: "POST", body: JSON.stringify(convertPropertyNames({ input: query }, replaceUpperCase)) });
+    const result = await requestRest<PostResponse>(path, { method: "POST", body: JSON.stringify(convertPropertyNames({ "data-provider:input": query }, replaceUpperCase)) });
     return result || null;
   }
 
@@ -53,7 +53,7 @@
   * Deletes one maintenence entry by its mountId from the backend.
   */
   public async deleteMaintenenceEntry(maintenenceEntry: MaintenenceEntry): Promise<(DeleteResponse) | null> {
-    const path = `/restconf/operations/data-provider:delete-maintenance`;
+    const path = `/rests/operations/data-provider:delete-maintenance`;
 
     const query = {
       "id": maintenenceEntry._id,
@@ -63,7 +63,7 @@
       "end": convertToISODateString(maintenenceEntry.end),
       "start": convertToISODateString(maintenenceEntry.start)
     };
-    const result = await requestRest<DeleteResponse>(path, { method: "POST", body: JSON.stringify(convertPropertyNames({ input: query }, replaceUpperCase)) });
+    const result = await requestRest<DeleteResponse>(path, { method: "POST", body: JSON.stringify(convertPropertyNames({ "data-provider:input": query }, replaceUpperCase)) });
     return result || null;
   }
 }
diff --git a/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js b/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js
index 33a3bed..eb6f785 100644
--- a/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/maintenanceApp/webpack.config.js
@@ -125,25 +125,29 @@
       stats: {
         colors: true
       },
-      proxy: {
+       proxy: {
         "/oauth2/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/database/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/restconf/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
+          secure: false
+        },
+        "/rests/": {
+          target: "http://10.20.6.29:48181",
           secure: false
         },
         "/help/": {
-          target: "http://localhost:48181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
-        "/websocket/": {
-          target: "http://localhost:48181",
+        "/websocket": {
+          target: "http://10.20.6.29:48181",
           ws: true,
           changeOrigin: true,
           secure: false
diff --git a/sdnr/wt/odlux/apps/mediatorApp/src/services/mediatorService.ts b/sdnr/wt/odlux/apps/mediatorApp/src/services/mediatorService.ts
index aee0866..ede6817 100644
--- a/sdnr/wt/odlux/apps/mediatorApp/src/services/mediatorService.ts
+++ b/sdnr/wt/odlux/apps/mediatorApp/src/services/mediatorService.ts
@@ -83,8 +83,8 @@
 
     const result = await requestRest<Result<MediatorServer>>(path, { method: "POST", body: JSON.stringify({ input: data }) });
 
-    if (result && result.output.data[0]) {
-      const firstResult = result.output.data[0];
+    if (result && result["data-provider:output"].data[0]) {
+      const firstResult = result["data-provider:output"].data[0];
 
       return {
         id: firstResult.id,
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts
index 6858598..70a8771 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts
@@ -47,13 +47,13 @@
 
 
     if (selectedTimePeriod === "15min") {
-      path = '/restconf/operations/data-provider:read-pmdata-15m-ltp-list';
+      path = '/rests/operations/data-provider:read-pmdata-15m-ltp-list';
     } else {
-      path = '/restconf/operations/data-provider:read-pmdata-24h-ltp-list';
+      path = '/rests/operations/data-provider:read-pmdata-24h-ltp-list';
     }
 
     const result = await requestRest<Result<string>>(path, { method: "POST", body: JSON.stringify(convertPropertyNames({ input: query }, replaceUpperCase)) });
-    return result && result.output && result.output.data && result.output.data.map(ne => ({ key: ne })) || null;
+    return result && result["data-provider:output"] && result["data-provider:output"].data && result["data-provider:output"].data.map(ne => ({ key: ne })) || null;
   }
 
 
@@ -62,9 +62,9 @@
   * Gets all devices from the performanceHistory 15min backend.
   */
   public async getDeviceListfromPerf15minHistory(): Promise<(DeviceListType)[] | null> {
-    const path = '/restconf/operations/data-provider:read-pmdata-15m-device-list';
+    const path = '/rests/operations/data-provider:read-pmdata-15m-device-list';
     const query = {
-      "input": {
+      "data-provider:input": {
         "filter": [],
         "sortorder": [],
         "pagination": {
@@ -75,7 +75,7 @@
     };
 
     const result = await requestRest<Result<string>>(path, { method: "POST", body: JSON.stringify(query) });
-    return result && result.output && result.output.data && result.output.data.map(ne => ({
+    return result && result["data-provider:output"] && result["data-provider:output"].data && result["data-provider:output"].data.map(ne => ({
       nodeId: ne
     })) || null;
   }
@@ -84,9 +84,9 @@
    * Gets all devices from the performanceHistory 24h backend.
    */
   public async getDeviceListfromPerf24hHistory(): Promise<(DeviceListType)[] | null> {
-    const path = '/restconf/operations/data-provider:read-pmdata-24h-device-list';
+    const path = '/rests/operations/data-provider:read-pmdata-24h-device-list';
     const query = {
-      "input": {
+      "data-provider:input": {
         "filter": [],
         "sortorder": [],
         "pagination": {
@@ -97,7 +97,7 @@
     };
 
     const result = await requestRest<Result<string>>(path, { method: "POST", body: JSON.stringify(query) });
-    return result && result.output && result.output.data && result.output.data.map(ne => ({
+    return result && result["data-provider:output"] && result["data-provider:output"].data && result["data-provider:output"].data.map(ne => ({
       nodeId: ne
     })) || null;
   }
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js b/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js
index 6579db3..5faf69e 100644
--- a/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js
+++ b/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js
@@ -126,15 +126,29 @@
       },
       proxy: {
         "/oauth2/": {
-          target: "http://10.20.6.29:28181",
+          target: "http://10.20.6.29:48181",
           secure: false
         },
-        "/restconf": {
-          target: "http://10.20.6.29:28181",
+        "/database/": {
+          target: "http://10.20.6.29:48181",
           secure: false
         },
-        "/database": {
-          target: "http://10.20.6.29:28181",
+        "/restconf/": {
+          target: "http://10.20.6.29:48181",
+          secure: false
+        },
+        "/rests/": {
+          target: "http://10.20.6.29:48181",
+          secure: false
+        },
+        "/help/": {
+          target: "http://10.20.6.29:48181",
+          secure: false
+        },
+        "/websocket": {
+          target: "http://10.20.6.29:48181",
+          ws: true,
+          changeOrigin: true,
           secure: false
         }
       }
