diff --git a/rapp-manager/config/application.yaml b/rapp-manager/config/application.yaml
index fef0225..e23b8dd 100644
--- a/rapp-manager/config/application.yaml
+++ b/rapp-manager/config/application.yaml
@@ -43,7 +43,7 @@
     org.springframework: ERROR
     org.springframework.data: ERROR
     org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
-    org.oransc.rappmanager: INFO
+    org.oransc.rappmanager: DEBUG
   file:
     name: /var/log/rapp-manager/application.log
 app:
diff --git a/rapp-manager/src/main/java/org/oransc/rappmanager/helm/HelmClient.java b/rapp-manager/src/main/java/org/oransc/rappmanager/helm/HelmClient.java
index dce6d30..05a8e00 100644
--- a/rapp-manager/src/main/java/org/oransc/rappmanager/helm/HelmClient.java
+++ b/rapp-manager/src/main/java/org/oransc/rappmanager/helm/HelmClient.java
@@ -18,6 +18,7 @@
 
 package org.oransc.rappmanager.helm;
 
+import java.lang.invoke.MethodHandles;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.List;
@@ -26,10 +27,12 @@
 import org.oransc.rappmanager.exception.ServiceException;
 import org.oransc.rappmanager.service.App;
 import org.oransc.rappmanager.service.AppStore;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 // Supports only helm3 + version
 public class HelmClient {
-
+    private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
     private final AppStore appStore;
 
     public HelmClient(AppStore appStore) {
@@ -63,12 +66,14 @@
             Process process = builder.start();
             process.waitFor();
             int exitValue = process.exitValue();
-            String output = IOUtils.toString(process.getInputStream(), StandardCharsets.UTF_8);
 
             if (exitValue != 0) {
                 String error = IOUtils.toString(process.getErrorStream(), StandardCharsets.UTF_8);
+                logger.error("Executing helm command {} failed, exitValue: {} {}", toString(builder), exitValue, error);
                 throw new ServiceException("Command execution failed: " + builder + " " + error);
             }
+            String output = IOUtils.toString(process.getInputStream(), StandardCharsets.UTF_8);
+            logger.debug("Command execution, output:{}", output);
             return output;
         } catch (Exception e) {
             throw new ServiceException("Failed to execute the Command", e);
@@ -77,21 +82,20 @@
 
     public ProcessBuilder prepareInstallCommand(App app) {
 
-        List<String> helmArguments = Arrays.asList("helm", //
-            "install", releaseName(app), getChartFileName(app), //
-            "--version", app.getVersion(), //
-            "--namespace", app.getNamespace());
-        addKubeApiInfo(helmArguments);
+        List<String> helmArguments = Arrays.asList(//
+            "helm", //
+            "install", getChartFileName(app), //
+            "--name", releaseName(app), //
+            "--namespace", app.getNamespace(), //
+            "--values", getOverrideFileName(app));
+
+        // addKubeApiInfo(helmArguments);
         ProcessBuilder processBuilder = new ProcessBuilder();
         return processBuilder.command(helmArguments);
     }
 
     public ProcessBuilder prepareUnInstallCommand(App app) {
-        List<String> helmArguments = Arrays.asList("helm", "uninstall", releaseName(app), //
-            "--namespace", app.getNamespace());
-        addKubeApiInfo(helmArguments);
-        ProcessBuilder processBuilder = new ProcessBuilder();
-        return processBuilder.command(helmArguments);
+        return new ProcessBuilder("helm", "delete", releaseName(app), "--purge");
     }
 
     private void addKubeApiInfo(List<String> helmArguments) {
@@ -103,4 +107,11 @@
         helmArguments.addAll(kubeApiInfo);
     }
 
+    protected static String toString(ProcessBuilder builder) {
+        StringBuilder str = new StringBuilder();
+        builder.command().forEach(arg -> str.append(" " + arg));
+        return str.toString().trim();
+
+    }
+
 }
diff --git a/rapp-manager/src/test/java/org/oransc/rappmanager/controller/KubernetesTest.java b/rapp-manager/src/test/java/org/oransc/rappmanager/controller/KubernetesTest.java
index 36c07e7..547c4d3 100644
--- a/rapp-manager/src/test/java/org/oransc/rappmanager/controller/KubernetesTest.java
+++ b/rapp-manager/src/test/java/org/oransc/rappmanager/controller/KubernetesTest.java
@@ -59,7 +59,7 @@
         "app.vardata-directory=./target" //
     })
 public class KubernetesTest {
-    private final static Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+    private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
     private static Gson gson = new GsonBuilder().serializeNulls().create();
     private final static String APP_NAME = "test-application";
     private final static String VERSION = "1.0.0";
@@ -81,17 +81,13 @@
 
         @Override
         public ProcessBuilder prepareInstallCommand(App app) {
-            String installCommand = "helm install " + getChartFileName(app) + //
-                " --name " + releaseName(app) + //
-                " --namespace " + app.getNamespace() + //
-                " --values " + getOverrideFileName(app);
-
+            String installCommand = toString(super.prepareInstallCommand(app));
             return executeInVagrant(installCommand);
         }
 
         @Override
         public ProcessBuilder prepareUnInstallCommand(App app) {
-            String unistall = "helm delete " + releaseName(app) + " --purge";
+            String unistall = toString(super.prepareUnInstallCommand(app));
             return executeInVagrant(unistall);
         }
 
diff --git a/rapp-manager/src/test/resources/Vagrantfile b/rapp-manager/src/test/resources/Vagrantfile
new file mode 100644
index 0000000..4929946
--- /dev/null
+++ b/rapp-manager/src/test/resources/Vagrantfile
@@ -0,0 +1,8 @@
+Vagrant.configure("2") do |config|
+  config.vm.box = "generic/ubuntu1804"
+  config.vm.provision "file", source: "install.sh", destination: "install.sh"
+  config.vm.network "forwarded_port", guest_ip: "127.0.0.1", guest: 8001, host: 9080
+  config.vm.synced_folder "/home/qpatbuh/", "/home/vagrant/host_filesystem" 
+  config.vm.synced_folder "/home/qpatbuh/src/nonrtric-prototyping/rapp-manager/target", "/home/vagrant/target"
+
+end
diff --git a/rapp-manager/src/test/resources/install.sh b/rapp-manager/src/test/resources/install.sh
new file mode 100755
index 0000000..f8bb71e
--- /dev/null
+++ b/rapp-manager/src/test/resources/install.sh
@@ -0,0 +1,131 @@
+#!/bin/bash
+
+# Script to run as root in a maiden Ubuntu VM in Vagrant. Will bring up Non-RT RIC in MiniKube, start the dashboard and proxy.
+# NOTE: Do 'sudo su' before running the script
+
+#Log all cmds to stdout
+set -x
+
+#Fetch and install docker
+curl -fsSL https://get.docker.com -o get-docker.sh
+
+sh get-docker.sh
+
+#Install conntrack
+apt-get install conntrack
+
+#Install socat
+apt install socat
+
+#Fetch and install minikube
+curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
+ && chmod +x minikube
+
+mkdir -p /usr/local/bin/
+
+install minikube /usr/local/bin/
+
+#Start minikube
+minikube start --vm-driver=none
+
+#Fetch and install kubectl
+
+curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
+
+chmod +x ./kubectl
+
+mv ./kubectl /usr/local/bin/kubectl
+
+kubectl version --client #Just print the version
+
+#Fetch helm
+curl -L https://git.io/get_helm.sh | bash
+
+#Create the service account
+cat > tiller-serviceaccount.yaml << EOF
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: tiller
+ namespace: kube-system
+---
+kind: ClusterRoleBinding
+apiVersion: rbac.authorization.k8s.io/v1beta1
+metadata:
+ name: tiller-clusterrolebinding
+subjects:
+- kind: ServiceAccount
+ name: tiller
+ namespace: kube-system
+roleRef:
+ kind: ClusterRole
+ name: cluster-admin
+ apiGroup: ""
+EOF
+
+kubectl create -f tiller-serviceaccount.yaml
+
+#Fetch and deploy the metrics server
+kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.7/components.yaml
+kubectl get deployment metrics-server -n kube-system
+
+#Fetch and deploy the kubernetes dashboard
+kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.2/aio/deploy/recommended.yaml
+kubectl delete clusterrolebinding kubernetes-dashboard
+kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard --user=clusterUser
+
+#Run helm
+helm init --service-account tiller --upgrade
+
+
+#Clone dep repo and deploy nonrtric components
+#git clone "https://gerrit.o-ran-sc.org/r/it/dep"
+
+#cd dep/bin
+
+#./deploy-nonrtric -f ../nonrtric/RECIPE_EXAMPLE/example_recipe.yaml
+
+#cd ../..
+
+#Create an account for login to the dashboard
+cat > eks-admin-service-account.yaml << EOF
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: eks-admin
+ namespace: kube-system
+---
+apiVersion: rbac.authorization.k8s.io/v1beta1
+kind: ClusterRoleBinding
+metadata:
+ name: eks-admin
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: cluster-admin
+subjects:
+- kind: ServiceAccount
+  name: eks-admin
+  namespace: kube-system
+EOF
+
+#Apply the account
+kubectl apply -f eks-admin-service-account.yaml
+
+#Print the 'secret' token. Needed for login from the browser on the host
+kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep eks-admin | awk '{print $1}')
+
+#Create serviceaccount and clusterrolebinding and patch the tiller-deployment to user service account.
+kubectl create serviceaccount --namespace kube-system tiller
+kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
+kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'
+cp -r /root/.kube /home/vagrant
+chown vagrant /home/vagrant/.kube
+chown vagrant /home/vagrant/.kube/config
+
+
+
+
+#Start the proxy so the dashboard can be accessed from the host machine
+kubectl proxy
+
