diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml b/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml
index 86af34284..61e615008 100644
--- a/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml
+++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/plugin.xml
@@ -358,4 +358,12 @@
-->
+
+
+
+
diff --git a/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/commands/LiveProcessCommandElement.java b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/commands/LiveProcessCommandElement.java
new file mode 100644
index 000000000..2bdddf0f6
--- /dev/null
+++ b/eclipse-language-servers/org.springframework.tooling.boot.ls/src/org/springframework/tooling/boot/ls/commands/LiveProcessCommandElement.java
@@ -0,0 +1,99 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Pivotal, Inc.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Pivotal, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.springframework.tooling.boot.ls.commands;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.CompletableFuture;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.lsp4e.LanguageServiceAccessor;
+import org.eclipse.lsp4j.ExecuteCommandParams;
+import org.eclipse.lsp4j.services.LanguageServer;
+import org.eclipse.ui.quickaccess.QuickAccessElement;
+
+/**
+ * @author Martin Lippert
+ */
+@SuppressWarnings("restriction")
+public class LiveProcessCommandElement extends QuickAccessElement {
+
+ public static final String COMMAND_LIST_PROCESSES = "sts/livedata/listProcesses";
+ public static final String COMMAND_CONNECT = "sts/livedata/connect";
+ public static final String COMMAND_REFRESH = "sts/livedata/refresh";
+ public static final String COMMAND_DISCONNECT = "sts/livedata/disconnect";
+
+ private final String processKey;
+ private final String label;
+ private final String action;
+
+ public LiveProcessCommandElement(String processKey, String label, String action) {
+ super();
+ this.processKey = processKey;
+ this.label = label;
+ this.action = action;
+ }
+
+ @Override
+ public String getLabel() {
+ if (COMMAND_REFRESH.equals(action)) {
+ return "Refresh Live Data for: " + label;
+ }
+ else if (COMMAND_CONNECT.equals(action)) {
+ return "Show live data for: " + label;
+ }
+ else if (COMMAND_DISCONNECT.equals(action)) {
+ return "Disconnect live data from: " + label;
+ }
+ else {
+ // error case
+ return "No live data action avaiable for: " + label;
+ }
+ }
+
+ @Override
+ public ImageDescriptor getImageDescriptor() {
+ return null;
+ }
+
+ @Override
+ public String getId() {
+ return processKey + action;
+ }
+
+ @Override
+ public void execute() {
+ System.out.println("EXECUTE THE COMMAND !!!");
+
+ List<@NonNull LanguageServer> usedLanguageServers = LanguageServiceAccessor.getActiveLanguageServers(serverCapabilities -> true);
+
+ if (usedLanguageServers.isEmpty()) {
+ return;
+ }
+
+ ExecuteCommandParams commandParams = new ExecuteCommandParams();
+ commandParams.setCommand(this.action);
+
+ List