diff --git a/org.eclipse.mdm.application/src/main/webapp/package-lock.json b/org.eclipse.mdm.application/src/main/webapp/package-lock.json
index ea11b62..7522fe1 100644
--- a/org.eclipse.mdm.application/src/main/webapp/package-lock.json
+++ b/org.eclipse.mdm.application/src/main/webapp/package-lock.json
@@ -1302,6 +1302,7 @@
       "version": "3.2.1",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
       "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "dev": true,
       "requires": {
         "color-convert": "^1.9.0"
       }
@@ -1885,7 +1886,7 @@
     "bootstrap": {
       "version": "4.1.3",
       "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.3.tgz",
-      "integrity": "sha1-DrNxryyESOjCEEEdDLgkpkCaEr4="
+      "integrity": "sha512-rDFIzgXcof0jDyjNosjv4Sno77X4KuPeFxG2XZZv1/Kc8DRVGVADdoQyyOVDwPqL36DDmtCQbrpMCqvpPLJQ0w=="
     },
     "brace-expansion": {
       "version": "1.1.11",
@@ -2182,6 +2183,7 @@
       "version": "2.4.1",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
       "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+      "dev": true,
       "requires": {
         "ansi-styles": "^3.2.1",
         "escape-string-regexp": "^1.0.5",
@@ -2420,6 +2422,7 @@
       "version": "1.9.3",
       "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
       "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=",
+      "dev": true,
       "requires": {
         "color-name": "1.1.3"
       }
@@ -2427,7 +2430,8 @@
     "color-name": {
       "version": "1.1.3",
       "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
-      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
+      "dev": true
     },
     "colors": {
       "version": "1.1.2",
@@ -3371,7 +3375,8 @@
     "escape-string-regexp": {
       "version": "1.0.5",
       "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
-      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true
     },
     "eslint-scope": {
       "version": "4.0.0",
@@ -4906,7 +4911,8 @@
     "has-flag": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
-      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true
     },
     "has-unicode": {
       "version": "2.0.1",
@@ -6195,6 +6201,7 @@
       "version": "2.2.5",
       "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz",
       "integrity": "sha1-FRIAlejtgZGG5HoLAS8810GJVWA=",
+      "dev": true,
       "requires": {
         "chalk": "^2.1.0",
         "log-symbols": "^2.1.0",
@@ -6204,12 +6211,14 @@
         "ansi-regex": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
-          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
         },
         "strip-ansi": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
           "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
           "requires": {
             "ansi-regex": "^3.0.0"
           }
@@ -6419,6 +6428,7 @@
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
       "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+      "dev": true,
       "requires": {
         "chalk": "^2.0.1"
       }
@@ -9697,6 +9707,11 @@
         "extend-shallow": "^3.0.0"
       }
     },
+    "split.js": {
+      "version": "1.5.11",
+      "resolved": "https://registry.npmjs.org/split.js/-/split.js-1.5.11.tgz",
+      "integrity": "sha512-ec0sAbWnaMGpNHWo1ZgIlF3Mx7GzSyaO0GlcEBZGIFZQwYPPkbDV6JRpDmpzIshVig7USREuEPudy0ygQaskXg=="
+    },
     "sprintf-js": {
       "version": "1.0.3",
       "resolved": "http://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -9987,6 +10002,7 @@
       "version": "5.5.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
       "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
+      "dev": true,
       "requires": {
         "has-flag": "^3.0.0"
       }
diff --git a/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin-modules.component.html b/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin-modules.component.html
index b240a99..21c6c65 100644
--- a/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin-modules.component.html
+++ b/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin-modules.component.html
@@ -11,9 +11,8 @@
  * SPDX-License-Identifier: EPL-2.0
  *
  ********************************************************************************-->
-
-<vertical-split-pane primary-component-minsize="{{minWidthLeft()}}" secondary-component-minsize="{{minWidthRight()}}" primary-component-initialratio="{{initRatio()}}">
-  <div class="split-pane-content-primary">
+ <div class="mainnavigation">
+  <div id="leftsidenav" class="split">
     <nav class="navbar navbar-default navbar-vertical bg-light">
       <div class="container-fluid">
         <div class="" id="bs-admin-navbar">
@@ -29,7 +28,7 @@
       </div>
     </nav>
   </div>
-  <div class="split-pane-content-secondary">
+  <div id="rightsidenav" class="split">
     <div class="navigator-content" (scroll)=onScroll($event)>
       <router-outlet></router-outlet>
       <div *ngIf="scrollBtnVisible" style="position: fixed; bottom: 30px; right: 35px;">
@@ -37,4 +36,4 @@
       </div>
     </div>
   </div>
-</vertical-split-pane>
+</div>
diff --git a/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin-modules.component.ts b/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin-modules.component.ts
index f784dfe..41a02e2 100644
--- a/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin-modules.component.ts
+++ b/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin-modules.component.ts
@@ -13,11 +13,10 @@
  ********************************************************************************/
 
 
-import {Component} from '@angular/core';
+import {Component, AfterViewInit} from '@angular/core';
 import {Router} from '@angular/router';
-
+import Split from 'split.js';
 import { TRANSLATE } from '../core/mdm-core.module';
-import { SplitPaneModule } from 'ng2-split-pane/lib/ng2-split-pane';
 
 @Component({
   selector: 'admin-modules',
@@ -25,11 +24,13 @@
   styleUrls: ['./admin-modules.component.css'],
   providers: []
 })
-export class AdminModulesComponent {
+export class AdminModulesComponent implements AfterViewInit {
 
   div: any;
   scrollBtnVisible = false;
 
+  split: Split;
+
   links = [
     { name: TRANSLATE('administration.admin-modules.preferences'), path: 'preferences'},
     { name: TRANSLATE('administration.admin-modules.extsystems'), path: 'extsystems'}
@@ -46,7 +47,23 @@
   }
 
   initRatio() {
-    return Math.max(200 / window.innerWidth, 0.20);
+    return Math.floor(Math.max(250 / window.innerWidth, 0.20) * 100);
+  }
+  initRatioRight() {
+    return 100 - this.initRatio();
+  }
+  ngAfterViewInit(): void {
+    this.split = Split(['#leftsidenav', '#rightsidenav'], {
+      sizes: [this.initRatio(), this.initRatioRight()],
+      minSize: this.minWidthLeft(),
+      gutterSize: 10,
+      gutterStyle: function (dimension, gutterSize) {
+        return {
+          'width': gutterSize + 'px',
+          'height': (document.getElementById('leftsidenav').clientHeight - 5) + 'px'
+        }
+      },
+    });
   }
 
   onScrollTop() {
diff --git a/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin.module.ts b/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin.module.ts
index 68eaff0..59c1cf7 100644
--- a/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin.module.ts
+++ b/org.eclipse.mdm.application/src/main/webapp/src/app/administration/admin.module.ts
@@ -25,7 +25,6 @@
 import { AdminModulesComponent } from './admin-modules.component';
 import { AdminRoutingModule } from './admin-routing.module';
 import { ExtSystemService } from './extsystem.service';
-import { SplitPaneModule } from 'ng2-split-pane/lib/ng2-split-pane';
 import { PreferenceModule } from './preference.module';
 import { TableModule } from 'primeng/table';
 import { ContextMenuModule } from 'primeng/contextmenu';
@@ -39,7 +38,6 @@
         MDMCoreModule,
         FormsModule,
         ReactiveFormsModule,
-        SplitPaneModule,
         PreferenceModule,
         TableModule,
         ContextMenuModule,
diff --git a/org.eclipse.mdm.application/src/main/webapp/src/app/administration/extsystem-editor.component.ts b/org.eclipse.mdm.application/src/main/webapp/src/app/administration/extsystem-editor.component.ts
index 02e0ab8..5783bfd 100644
--- a/org.eclipse.mdm.application/src/main/webapp/src/app/administration/extsystem-editor.component.ts
+++ b/org.eclipse.mdm.application/src/main/webapp/src/app/administration/extsystem-editor.component.ts
@@ -312,8 +312,8 @@
             this.translateService.instant('administration.extsystem.err-cannot-save-ext-system-attr'), error);
           // restore values
           this.getAttributeFromNode(this.tmpExtSystemAttr, 'Name').value = this.getAttributeValueFromNode(this.tmpNode, 'Name');
-          this.getAttributeFromNode(this.tmpExtSystemAttr, 'Description').value = this.getAttributeValueFromNode(this.tmpNode, 'Description');
-          this.tmpExtSystemAttr.name = this.getAttributeValueFromNode(this.tmpExtSystemAttr, 'Name');
+          this.getAttributeFromNode(this.tmpExtSystemAttr, 'Description').value = <string> this.getAttributeValueFromNode(this.tmpNode, 'Description');
+          this.tmpExtSystemAttr.name = <string> this.getAttributeValueFromNode(this.tmpExtSystemAttr, 'Name');
           this.tmpNode = undefined;
        }
       );
@@ -325,7 +325,7 @@
     this.dialogExtSystemAttr = false;
     this.getAttributeFromNode(this.tmpExtSystemAttr, 'Name').value = this.getAttributeValueFromNode(this.tmpNode, 'Name');
     this.getAttributeFromNode(this.tmpExtSystemAttr, 'Description').value = this.getAttributeValueFromNode(this.tmpNode, 'Description');
-    this.tmpExtSystemAttr.name = this.getAttributeValueFromNode(this.tmpExtSystemAttr, 'Name');
+    this.tmpExtSystemAttr.name = <string> this.getAttributeValueFromNode(this.tmpExtSystemAttr, 'Name');
     this.tmpExtSystemAttr = undefined;
   }
 
@@ -419,7 +419,7 @@
           this.getAttributeFromNode(this.tmpExtSystemMDMAttr, 'CompType').value = this.getAttributeValueFromNode(this.tmpNode, 'CompType');
           this.getAttributeFromNode(this.tmpExtSystemMDMAttr, 'CompName').value = this.getAttributeValueFromNode(this.tmpNode, 'CompName');
           this.getAttributeFromNode(this.tmpExtSystemMDMAttr, 'AttrName').value = this.getAttributeValueFromNode(this.tmpNode, 'AttrName');
-          this.tmpExtSystemMDMAttr.name = this.getAttributeValueFromNode(this.tmpExtSystemMDMAttr, 'Name');
+          this.tmpExtSystemMDMAttr.name = <string> this.getAttributeValueFromNode(this.tmpExtSystemMDMAttr, 'Name');
           this.tmpNode = undefined;
         }
       );
@@ -528,26 +528,26 @@
   }
 
   getCatalogComponentStr() {
-    let type: string = this.getAttributeValueFromNode(this.tmpExtSystemMDMAttr, 'CompType');
+    let type: string = <string> this.getAttributeValueFromNode(this.tmpExtSystemMDMAttr, 'CompType');
     let data: string[] = new Array();
     // sensor does not have catalog elements
     if (type !== undefined && type !== 'Sensor') {
-      let tmp = this.getCatalogComponents(type);
-      for (let i in tmp) {
-        data.push(tmp[i].name);
+      let components = this.getCatalogComponents(type);
+      for (let component of components) {
+        data.push(component.name);
       }
     }
     return data;
   }
 
   getAttributeComponentStr() {
-    let type: string = this.getAttributeValueFromNode(this.tmpExtSystemMDMAttr, 'CompType');
-    let comp: string = this.getAttributeValueFromNode(this.tmpExtSystemMDMAttr, 'CompName');
+    let type: string = <string> this.getAttributeValueFromNode(this.tmpExtSystemMDMAttr, 'CompType');
+    let comp: string = <string> this.getAttributeValueFromNode(this.tmpExtSystemMDMAttr, 'CompName');
     let data: string[] = new Array();
     if (type !== undefined && comp !== undefined) {
-      let tmp = this.getAttributeComponents(type, comp);
-      for (let i in tmp) {
-        data.push(tmp[i].name);
+      let components = this.getAttributeComponents(type, comp);
+      for (let component of components) {
+        data.push(component.name);
       }
     }
     return data;
