This is an automated email from the ASF dual-hosted git repository.

tiagobento pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-apps.git


The following commit(s) were added to refs/heads/main by this push:
     new e7680b4aa incubator-kie-issues#280: Fix `jbpm-quarkus-devui` to adapt 
it to the new  Quarkus 3 Dev UI. (#2018)
e7680b4aa is described below

commit e7680b4aaef743f8da308c39b43433cb694323fe
Author: Pere Fernández <[email protected]>
AuthorDate: Thu Mar 21 18:50:02 2024 +0100

    incubator-kie-issues#280: Fix `jbpm-quarkus-devui` to adapt it to the new  
Quarkus 3 Dev UI. (#2018)
    
    * incubator-kie-issues#280: Fix `jbpm-quarkus-devui` to adapt it to the new 
 Quarkus 3 Dev UI.
    * fixed `jbpm-quarkus-devui`: added Dev UI Cards, replaced Qute templates 
to JS component, added recorder for static resources, fixed data-index url 
lookup & restored badges
    
    * fixed `sonataflow-quarkus-devui`: added recorder for static resources & 
fixed data-index url lookup
    
    * restoring `dynamicLabelJsonRPCMethodName`.
---
 .../swf/tools/deployment/DevConsoleProcessor.java  |  51 +++----
 ...erverlessWorkflowQuarkusExtensionProcessor.java |   2 +-
 .../src/main/resources/dev-templates/embedded.html |  58 --------
 .../main/resources/dev-templates/monitoring.html   |  47 ------
 .../resources/dev-templates/workflowInstances.html |  47 ------
 .../config/DevUIStaticArtifactsRecorder.java       |  44 ++++++
 .../pom.xml                                        |   4 +
 .../extension/deployment/DevConsoleProcessor.java  | 158 +++++++++++++++++----
 .../RuntimeToolsQuarkusExtensionProcessor.java     |   2 +-
 .../extension/deployment/data/UserInfo.java}       |   6 +-
 .../src/main/resources/dev-templates/audit.html    |  41 ------
 .../src/main/resources/dev-templates/embedded.html |  96 -------------
 .../src/main/resources/dev-templates/forms.html    |  41 ------
 .../src/main/resources/dev-templates/jobs.html     |  41 ------
 .../resources/dev-templates/processInstances.html  |  41 ------
 .../src/main/resources/dev-templates/tasks.html    |  41 ------
 .../resources/dev-ui/qwc-jbpm-quarkus-devui.js     |  79 +++++++++++
 .../config/DevUIStaticArtifactsRecorder.java       |  45 ++++++
 .../runtime/dataindex/DataIndexClient.java         |  53 +++++++
 .../{user/User.java => dataindex/jobs/Job.java}    |  21 +--
 .../UserInfo.java => dataindex/jobs/JobsData.java} |  29 ++--
 .../runtime/dataindex/jobs/JobsResponse.java       |  24 ++--
 .../processes/ProcessInstance.java}                |  21 +--
 .../processes/ProcessInstancesData.java}           |  27 ++--
 .../processes/ProcessInstancesResponse.java}       |  24 ++--
 .../{user/User.java => dataindex/tasks/Task.java}  |  21 +--
 .../tasks/TaskResponseData.java}                   |  27 ++--
 .../runtime/dataindex/tasks/TasksResponse.java     |  20 +--
 .../runtime/rpc/JBPMDevuiJsonRPCService.java       |  79 +++++++++++
 .../extension/runtime/user/UserInfoSupplier.java   |  44 ------
 .../main/resources/META-INF/quarkus-extension.yaml |   2 +-
 .../src/main/resources/application.properties      |   3 +-
 .../runtime/user/UserInfoSupplierTest.java         |  65 ---------
 33 files changed, 584 insertions(+), 720 deletions(-)

diff --git 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/DevConsoleProcessor.java
 
b/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/DevConsoleProcessor.java
index 23998df8f..6d6d126d6 100644
--- 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/DevConsoleProcessor.java
+++ 
b/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/DevConsoleProcessor.java
@@ -19,54 +19,48 @@
 package org.kie.kogito.swf.tools.deployment;
 
 import java.io.IOException;
-import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Path;
-import java.util.Optional;
+import java.util.List;
 
-import 
org.kie.kogito.quarkus.extensions.spi.deployment.KogitoDataIndexServiceAvailableBuildItem;
+import org.kie.kogito.swf.tools.runtime.config.DevUIStaticArtifactsRecorder;
 
-import io.quarkus.deployment.Capabilities;
 import io.quarkus.deployment.IsDevelopment;
 import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.annotations.ExecutionTime;
 import io.quarkus.deployment.annotations.Record;
-import io.quarkus.deployment.builditem.ConfigurationBuildItem;
-import io.quarkus.deployment.builditem.LaunchModeBuildItem;
-import io.quarkus.deployment.builditem.LiveReloadBuildItem;
-import io.quarkus.deployment.builditem.ShutdownContextBuildItem;
+import io.quarkus.deployment.builditem.*;
 import io.quarkus.deployment.pkg.builditem.CurateOutcomeBuildItem;
 import io.quarkus.deployment.util.WebJarUtil;
-import io.quarkus.devconsole.spi.DevConsoleTemplateInfoBuildItem;
 import io.quarkus.devui.spi.page.CardPageBuildItem;
 import io.quarkus.devui.spi.page.Page;
 import io.quarkus.maven.dependency.ResolvedDependency;
 import io.quarkus.vertx.http.deployment.NonApplicationRootPathBuildItem;
 import io.quarkus.vertx.http.deployment.RouteBuildItem;
-import io.quarkus.vertx.http.runtime.devmode.DevConsoleRecorder;
 import 
io.quarkus.vertx.http.runtime.management.ManagementInterfaceBuildTimeConfig;
 
 public class DevConsoleProcessor {
 
     private static final String STATIC_RESOURCES_PATH = "dev-static/";
-    private static final String BASE_RELATIVE_URL = 
"/q/dev-v1/org.apache.kie.sonataflow.sonataflow-quarkus-devui";
-    private static final String DATA_INDEX_CAPABILITY = 
"org.kie.kogito.data-index";
+    private static final String BASE_RELATIVE_URL = 
"/q/dev-ui/org.kie.kogito.sonataflow-quarkus-devui";
 
     @BuildStep(onlyIf = IsDevelopment.class)
     public CardPageBuildItem pages(NonApplicationRootPathBuildItem 
nonApplicationRootPathBuildItem,
             ManagementInterfaceBuildTimeConfig 
managementInterfaceBuildTimeConfig,
             LaunchModeBuildItem launchModeBuildItem,
-            ConfigurationBuildItem configurationBuildItem) throws 
UnsupportedEncodingException {
+            List<SystemPropertyBuildItem> systemPropertyBuildItems,
+            ConfigurationBuildItem configurationBuildItem) {
 
         String uiPath = 
nonApplicationRootPathBuildItem.resolveManagementPath(BASE_RELATIVE_URL,
                 managementInterfaceBuildTimeConfig, launchModeBuildItem, true);
 
-        String devUIUrl = getProperty(configurationBuildItem, 
"kogito.dev-ui.url");
-        String devUIUrlQueryParam = devUIUrl != null ? "&devUIUrl=" + 
URLEncoder.encode(devUIUrl, "UTF-8") : "";
+        String devUIUrl = getProperty(configurationBuildItem, 
systemPropertyBuildItems, "kogito.dev-ui.url");
+        String devUIUrlQueryParam = devUIUrl != null ? "&devUIUrl=" + 
URLEncoder.encode(devUIUrl, StandardCharsets.UTF_8) : "";
 
-        String dataIndexUrl = getProperty(configurationBuildItem, 
"kogito.data-index.url");
-        String dataIndexUrlQueryParam = dataIndexUrl != null ? 
"&dataIndexUrl=" + URLEncoder.encode(dataIndexUrl, "UTF-8") : "";
+        String dataIndexUrl = getProperty(configurationBuildItem, 
systemPropertyBuildItems, "kogito.data-index.url");
+        String dataIndexUrlQueryParam = dataIndexUrl != null ? 
"&dataIndexUrl=" + URLEncoder.encode(dataIndexUrl, StandardCharsets.UTF_8) : "";
 
         CardPageBuildItem cardPageBuildItem = new CardPageBuildItem();
 
@@ -85,7 +79,7 @@ public class DevConsoleProcessor {
 
     @BuildStep(onlyIf = IsDevelopment.class)
     @Record(ExecutionTime.RUNTIME_INIT)
-    public void deployStaticResources(final DevConsoleRecorder recorder,
+    public void deployStaticResources(final DevUIStaticArtifactsRecorder 
devUIStaticArtifactsRecorder,
             final CurateOutcomeBuildItem curateOutcomeBuildItem,
             final LiveReloadBuildItem liveReloadBuildItem,
             final LaunchModeBuildItem launchMode,
@@ -105,22 +99,13 @@ public class DevConsoleProcessor {
 
         routeBuildItemBuildProducer.produce(new RouteBuildItem.Builder()
                 .route(BASE_RELATIVE_URL + "/*")
-                
.handler(recorder.devConsoleHandler(devConsoleStaticResourcesDeploymentPath.toString(),
+                
.handler(devUIStaticArtifactsRecorder.handler(devConsoleStaticResourcesDeploymentPath.toString(),
                         shutdownContext))
                 .build());
     }
 
-    @SuppressWarnings("unused")
-    @BuildStep(onlyIf = IsDevelopment.class)
-    public void 
isDataIndexAvailable(BuildProducer<DevConsoleTemplateInfoBuildItem> 
devConsoleTemplateInfoBuildItemBuildProducer,
-            Optional<KogitoDataIndexServiceAvailableBuildItem> 
dataIndexServiceAvailableBuildItem,
-            Capabilities capabilities) {
-        devConsoleTemplateInfoBuildItemBuildProducer.produce(new 
DevConsoleTemplateInfoBuildItem("isDataIndexAvailable",
-                dataIndexServiceAvailableBuildItem.isPresent() || 
capabilities.isPresent(DATA_INDEX_CAPABILITY)));
-    }
-
     private static String getProperty(ConfigurationBuildItem 
configurationBuildItem,
-            String propertyKey) {
+            List<SystemPropertyBuildItem> systemPropertyBuildItems, String 
propertyKey) {
 
         String propertyValue = configurationBuildItem
                 .getReadResult()
@@ -143,6 +128,12 @@ public class DevConsoleProcessor {
                     .get(propertyKey);
         }
 
-        return propertyValue;
+        if (propertyValue != null) {
+            return propertyValue;
+        }
+
+        return systemPropertyBuildItems.stream().filter(property -> 
property.getKey().equals(propertyKey))
+                .findAny()
+                .map(SystemPropertyBuildItem::getValue).orElse(null);
     }
 }
diff --git 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/ServerlessWorkflowQuarkusExtensionProcessor.java
 
b/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/ServerlessWorkflowQuarkusExtensionProcessor.java
index e6908ca5a..2f9c2e336 100644
--- 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/ServerlessWorkflowQuarkusExtensionProcessor.java
+++ 
b/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/ServerlessWorkflowQuarkusExtensionProcessor.java
@@ -23,7 +23,7 @@ import io.quarkus.deployment.builditem.FeatureBuildItem;
 
 class ServerlessWorkflowQuarkusExtensionProcessor {
 
-    private static final String FEATURE = "kogito-serverless-workflow-devui";
+    private static final String FEATURE = "sonataflow-quarkus-devui";
 
     @BuildStep
     FeatureBuildItem feature() {
diff --git 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/resources/dev-templates/embedded.html
 
b/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/resources/dev-templates/embedded.html
deleted file mode 100644
index d61c149e6..000000000
--- 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/resources/dev-templates/embedded.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-
--->
-{#if info:isDataIndexAvailable}
-<a href="{urlbase}/workflowInstances" class="badge badge-light">
-  <i class="fa fa-project-diagram fa-fw"></i>
-  Workflow Instances
-  <span id="workflowInstancesCount" class="badge badge-light" />
-</a>
-<a href="{urlbase}/monitoring" class="badge badge-light">
-  <i class="fa fa-tachometer fa-fw"></i>
-  Monitoring
-</a>
-{/if} {#if info:isDataIndexAvailable == false}
-<p>No Kogito addons detected.</p>
-{/if} {#if info:isDataIndexAvailable}
-<script>
-  const graphqlUrl = "{config:property('kogito.data-index.url') ?: 
''}/graphql";
-
-  {|
-      const fillCount = () => {
-          fetch(graphqlUrl, {
-              method: "POST",
-              headers: {
-                  "Content-Type": "application/json",
-                  Accept: "application/json",
-              },
-              body: JSON.stringify({query: "query getAllProcessesIds{  
ProcessInstances{ id } }"}),
-          })
-              .then(r => r.json())
-              .then(json => 
$("#workflowInstancesCount").text(json.data.ProcessInstances.length))
-              .catch(error => {
-                  console.log("Error while trying to fetch workflow instances 
count.");
-                  console.error(error);
-              });
-      };
-
-      fillCount();
-  |}
-</script>
-{/if}
diff --git 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/resources/dev-templates/monitoring.html
 
b/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/resources/dev-templates/monitoring.html
deleted file mode 100644
index 160e99fbb..000000000
--- 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/resources/dev-templates/monitoring.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-
--->
-{#include main fluid=true} {#style} .main-container { margin: 0; padding: 0; }
-#envelope-app { width: 100vw; height: calc(100vh - 98px); } {/style}
-{#title}Runtime UI{/title} {#body}
-<div id="envelope-app"></div>
-
-<script src="resources/webapp/standalone.js"></script>
-<script>
-  const devUI = RuntimeToolsDevUI.open({
-      container: document.getElementById("envelope-app"),
-      isDataIndexAvailable: {info:isDataIndexAvailable},
-      dataIndexUrl: "{config:property('kogito.data-index.url') ?: ''}/graphql",
-      page: "Monitoring",
-      devUIUrl: {#if 
config:property('kogito.dev-ui.url')}"{config:property('kogito.dev-ui.url')}"{#else}window.location.origin{/if},
-      openApiPath: "q/openapi.json",
-      availablePages: ["Processes", "Monitoring", "CustomDashboard"],
-      customLabels: {
-          singularProcessLabel: "Workflow",
-          pluralProcessLabel: "Workflows"
-      },
-      omittedProcessTimelineEvents: ["EmbeddedStart", "EmbeddedEnd", "Script"],
-      diagramPreviewSize: {
-          width: 1000,
-          height: 1000
-      }
-  })
-</script>
-{/body} {/include}
diff --git 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/resources/dev-templates/workflowInstances.html
 
b/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/resources/dev-templates/workflowInstances.html
deleted file mode 100644
index 20024126b..000000000
--- 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/resources/dev-templates/workflowInstances.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-
--->
-{#include main fluid=true} {#style} .main-container { margin: 0; padding: 0; }
-#envelope-app { width: 100vw; height: calc(100vh - 98px); } {/style}
-{#title}Runtime UI{/title} {#body}
-<div id="envelope-app"></div>
-
-<script src="resources/webapp/standalone.js"></script>
-<script>
-  const devUI = RuntimeToolsDevUI.open({
-      container: document.getElementById("envelope-app"),
-      isDataIndexAvailable: {info:isDataIndexAvailable},
-      dataIndexUrl: "{config:property('kogito.data-index.url') ?: ''}/graphql",
-      page: "Processes",
-      devUIUrl: {#if 
config:property('kogito.dev-ui.url')}"{config:property('kogito.dev-ui.url')}"{#else}window.location.origin{/if},
-      openApiPath: "q/openapi.json",
-      availablePages: ["Processes", "Monitoring", "CustomDashboard"],
-      customLabels: {
-          singularProcessLabel: "Workflow",
-          pluralProcessLabel: "Workflows"
-      },
-      omittedProcessTimelineEvents: ["EmbeddedStart", "EmbeddedEnd", "Script"],
-      diagramPreviewSize: {
-          width: 1000,
-          height: 1000
-      }
-  })
-</script>
-{/body} {/include}
diff --git 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui/src/main/java/org/kie/kogito/swf/tools/runtime/config/DevUIStaticArtifactsRecorder.java
 
b/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui/src/main/java/org/kie/kogito/swf/tools/runtime/config/DevUIStaticArtifactsRecorder.java
new file mode 100644
index 000000000..c564e0a0a
--- /dev/null
+++ 
b/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui/src/main/java/org/kie/kogito/swf/tools/runtime/config/DevUIStaticArtifactsRecorder.java
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.kie.kogito.swf.tools.runtime.config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import io.quarkus.runtime.ShutdownContext;
+import io.quarkus.runtime.annotations.Recorder;
+import io.quarkus.vertx.http.runtime.devmode.FileSystemStaticHandler;
+import io.vertx.core.Handler;
+import io.vertx.ext.web.RoutingContext;
+
+@Recorder
+public class DevUIStaticArtifactsRecorder {
+    public Handler<RoutingContext> handler(String deploymentArtifactPath, 
ShutdownContext shutdownContext) {
+        List<FileSystemStaticHandler.StaticWebRootConfiguration> 
webRootConfigurations = new ArrayList<>();
+        webRootConfigurations.add(
+                new 
FileSystemStaticHandler.StaticWebRootConfiguration(deploymentArtifactPath, ""));
+
+        FileSystemStaticHandler fileSystemStaticHandler = new 
FileSystemStaticHandler(webRootConfigurations);
+
+        shutdownContext.addShutdownTask(new 
ShutdownContext.CloseRunnable(fileSystemStaticHandler));
+
+        return fileSystemStaticHandler;
+    }
+}
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/pom.xml
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/pom.xml
index f6937b6ed..a5525fec6 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/pom.xml
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/pom.xml
@@ -50,6 +50,10 @@
       <groupId>io.quarkus</groupId>
       <artifactId>quarkus-arc-deployment</artifactId>
     </dependency>
+    <dependency>
+      <groupId>io.quarkus</groupId>
+      <artifactId>quarkus-rest-client-deployment</artifactId>
+    </dependency>
     <dependency>
       <groupId>io.quarkus</groupId>
       <artifactId>quarkus-resteasy-deployment</artifactId>
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/deployment/DevConsoleProcessor.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/deployment/DevConsoleProcessor.java
index 16ae6b420..803a79379 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/deployment/DevConsoleProcessor.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/deployment/DevConsoleProcessor.java
@@ -20,12 +20,18 @@ package 
org.kie.kogito.runtime.tools.quarkus.extension.deployment;
 
 import java.io.IOException;
 import java.nio.file.Path;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import java.util.Optional;
+import java.util.stream.Collectors;
 
 import 
org.kie.kogito.quarkus.extensions.spi.deployment.KogitoDataIndexServiceAvailableBuildItem;
 import 
org.kie.kogito.quarkus.extensions.spi.deployment.TrustyServiceAvailableBuildItem;
+import org.kie.kogito.runtime.tools.quarkus.extension.deployment.data.UserInfo;
 import 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.config.DevConsoleRuntimeConfig;
-import 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.user.UserInfoSupplier;
+import 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.config.DevUIStaticArtifactsRecorder;
+import 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.rpc.JBPMDevuiJsonRPCService;
 
 import io.quarkus.deployment.Capabilities;
 import io.quarkus.deployment.IsDevelopment;
@@ -33,33 +39,27 @@ import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
 import io.quarkus.deployment.annotations.ExecutionTime;
 import io.quarkus.deployment.annotations.Record;
-import io.quarkus.deployment.builditem.LaunchModeBuildItem;
-import io.quarkus.deployment.builditem.LiveReloadBuildItem;
-import io.quarkus.deployment.builditem.ShutdownContextBuildItem;
+import io.quarkus.deployment.builditem.*;
 import io.quarkus.deployment.pkg.builditem.CurateOutcomeBuildItem;
 import io.quarkus.deployment.util.WebJarUtil;
-import io.quarkus.devconsole.spi.DevConsoleTemplateInfoBuildItem;
+import io.quarkus.devui.spi.JsonRPCProvidersBuildItem;
+import io.quarkus.devui.spi.page.CardPageBuildItem;
+import io.quarkus.devui.spi.page.Page;
 import io.quarkus.maven.dependency.ResolvedDependency;
+import io.quarkus.vertx.http.deployment.NonApplicationRootPathBuildItem;
 import io.quarkus.vertx.http.deployment.RouteBuildItem;
-import io.quarkus.vertx.http.runtime.devmode.DevConsoleRecorder;
+import 
io.quarkus.vertx.http.runtime.management.ManagementInterfaceBuildTimeConfig;
 
 public class DevConsoleProcessor {
 
     private static final String STATIC_RESOURCES_PATH = "dev-static/";
-    private static final String BASE_RELATIVE_URL = 
"/q/dev-v1/org.jbpm.jbpm-quarkus-devui";
+    private static final String BASE_RELATIVE_URL = 
"/q/dev-ui/org.jbpm.jbpm-quarkus-devui";
     private static final String DATA_INDEX_CAPABILITY = 
"org.kie.kogito.data-index";
 
     @SuppressWarnings("unused")
-    @BuildStep(onlyIf = IsDevelopment.class)
-    public void collectUsersInfo(final 
BuildProducer<DevConsoleTemplateInfoBuildItem> 
devConsoleTemplateInfoBuildItemBuildProducer,
-            final DevConsoleRuntimeConfig devConsoleRuntimeConfig) {
-        devConsoleTemplateInfoBuildItemBuildProducer.produce(new 
DevConsoleTemplateInfoBuildItem("userInfo",
-                new 
UserInfoSupplier(devConsoleRuntimeConfig.userConfigByUser).get()));
-    }
-
     @BuildStep(onlyIf = IsDevelopment.class)
     @Record(ExecutionTime.RUNTIME_INIT)
-    public void deployStaticResources(final DevConsoleRecorder recorder,
+    public void deployStaticResources(final DevUIStaticArtifactsRecorder 
devUIStaticArtifactsRecorder,
             final CurateOutcomeBuildItem curateOutcomeBuildItem,
             final LiveReloadBuildItem liveReloadBuildItem,
             final LaunchModeBuildItem launchMode,
@@ -79,31 +79,133 @@ public class DevConsoleProcessor {
 
         routeBuildItemBuildProducer.produce(new RouteBuildItem.Builder()
                 .route(BASE_RELATIVE_URL + "/resources/*")
-                
.handler(recorder.devConsoleHandler(devConsoleStaticResourcesDeploymentPath.toString(),
+                
.handler(devUIStaticArtifactsRecorder.handler(devConsoleStaticResourcesDeploymentPath.toString(),
                         shutdownContext))
                 .build());
 
         routeBuildItemBuildProducer.produce(new RouteBuildItem.Builder()
                 .route(BASE_RELATIVE_URL + "/*")
-                
.handler(recorder.devConsoleHandler(devConsoleStaticResourcesDeploymentPath.toString(),
+                
.handler(devUIStaticArtifactsRecorder.handler(devConsoleStaticResourcesDeploymentPath.toString(),
                         shutdownContext))
                 .build());
     }
 
-    @SuppressWarnings("unused")
     @BuildStep(onlyIf = IsDevelopment.class)
-    public void 
isProcessEnabled(BuildProducer<DevConsoleTemplateInfoBuildItem> 
devConsoleTemplateInfoBuildItemBuildProducer,
-            Optional<KogitoDataIndexServiceAvailableBuildItem> 
dataIndexServiceAvailableBuildItem,
-            Capabilities capabilities) {
-        devConsoleTemplateInfoBuildItemBuildProducer.produce(new 
DevConsoleTemplateInfoBuildItem("isProcessEnabled",
-                dataIndexServiceAvailableBuildItem.isPresent() || 
capabilities.isPresent(DATA_INDEX_CAPABILITY)));
+    public JsonRPCProvidersBuildItem createJsonRPCServiceForJBPMDevUi() {
+        return new JsonRPCProvidersBuildItem(JBPMDevuiJsonRPCService.class);
     }
 
-    @SuppressWarnings("unused")
     @BuildStep(onlyIf = IsDevelopment.class)
-    public void isTracingEnabled(final 
BuildProducer<DevConsoleTemplateInfoBuildItem> 
devConsoleTemplateInfoBuildItemBuildProducer,
-            final Optional<TrustyServiceAvailableBuildItem> 
trustyServiceAvailableBuildItem) {
-        devConsoleTemplateInfoBuildItemBuildProducer.produce(new 
DevConsoleTemplateInfoBuildItem("isTracingEnabled",
-                trustyServiceAvailableBuildItem.isPresent()));
+    public CardPageBuildItem pages(
+            final NonApplicationRootPathBuildItem 
nonApplicationRootPathBuildItem,
+            final DevConsoleRuntimeConfig devConsoleRuntimeConfig,
+            final ManagementInterfaceBuildTimeConfig 
managementInterfaceBuildTimeConfig,
+            final LaunchModeBuildItem launchModeBuildItem,
+            final ConfigurationBuildItem configurationBuildItem,
+            final List<SystemPropertyBuildItem> systemPropertyBuildItems,
+            final Optional<KogitoDataIndexServiceAvailableBuildItem> 
dataIndexServiceAvailableBuildItem,
+            final Optional<TrustyServiceAvailableBuildItem> 
trustyServiceAvailableBuildItem,
+            final Capabilities capabilities) {
+
+        CardPageBuildItem cardPageBuildItem = new CardPageBuildItem();
+
+        String uiPath = 
nonApplicationRootPathBuildItem.resolveManagementPath(BASE_RELATIVE_URL,
+                managementInterfaceBuildTimeConfig, launchModeBuildItem, true);
+
+        String openapiPath = getProperty(configurationBuildItem, 
systemPropertyBuildItems, "quarkus.smallrye-openapi.path");
+        String devUIUrl = getProperty(configurationBuildItem, 
systemPropertyBuildItems, "kogito.dev-ui.url");
+        String dataIndexUrl = getProperty(configurationBuildItem, 
systemPropertyBuildItems, "kogito.data-index.url");
+        String trustyServiceUrl = getProperty(configurationBuildItem, 
systemPropertyBuildItems, "kogito.trusty.http.url");
+
+        cardPageBuildItem.addBuildTimeData("extensionBasePath", uiPath);
+        cardPageBuildItem.addBuildTimeData("openapiPath", openapiPath);
+        cardPageBuildItem.addBuildTimeData("devUIUrl", devUIUrl);
+        cardPageBuildItem.addBuildTimeData("dataIndexUrl", dataIndexUrl);
+        cardPageBuildItem.addBuildTimeData("isTracingEnabled", 
trustyServiceAvailableBuildItem.isPresent());
+        cardPageBuildItem.addBuildTimeData("trustyServiceUrl", 
trustyServiceUrl);
+        cardPageBuildItem.addBuildTimeData("userData", 
readUsersInfo(devConsoleRuntimeConfig));
+
+        if (dataIndexServiceAvailableBuildItem.isPresent() || 
capabilities.isPresent(DATA_INDEX_CAPABILITY)) {
+            cardPageBuildItem.addPage(Page.webComponentPageBuilder()
+                    .componentLink("qwc-jbpm-quarkus-devui.js")
+                    .metadata("page", "Processes")
+                    .title("Process Instances")
+                    .icon("font-awesome-solid:diagram-project")
+                    
.dynamicLabelJsonRPCMethodName("queryProcessInstancesCount"));
+
+            cardPageBuildItem.addPage(Page.webComponentPageBuilder()
+                    .componentLink("qwc-jbpm-quarkus-devui.js")
+                    .metadata("page", "TaskInbox")
+                    .title("Tasks")
+                    .icon("font-awesome-solid:bars-progress")
+                    .dynamicLabelJsonRPCMethodName("queryTasksCount"));
+
+            cardPageBuildItem.addPage(Page.webComponentPageBuilder()
+                    .componentLink("qwc-jbpm-quarkus-devui.js")
+                    .metadata("page", "JobsManagement")
+                    .title("Jobs")
+                    .icon("font-awesome-solid:clock")
+                    .dynamicLabelJsonRPCMethodName("queryJobsCount"));
+
+            cardPageBuildItem.addPage(Page.webComponentPageBuilder()
+                    .componentLink("qwc-jbpm-quarkus-devui.js")
+                    .metadata("page", "Forms")
+                    .title("Forms")
+                    .icon("font-awesome-solid:table-cells")
+                    .dynamicLabelJsonRPCMethodName("getFormsCount"));
+        }
+
+        if (trustyServiceAvailableBuildItem.isPresent()) {
+            cardPageBuildItem.addPage(Page.webComponentPageBuilder()
+                    .componentLink("qwc-jbpm-quarkus-devui.js")
+                    .metadata("page", "Audit")
+                    .title("Audit investigation")
+                    .icon("font-awesome-solid:gauge-high"));
+        }
+
+        return cardPageBuildItem;
+    }
+
+    private Collection<UserInfo> readUsersInfo(DevConsoleRuntimeConfig 
devConsoleRuntimeConfig) {
+        if (devConsoleRuntimeConfig.userConfigByUser.isEmpty()) {
+            return Collections.emptyList();
+        }
+
+        return devConsoleRuntimeConfig.userConfigByUser.entrySet().stream()
+                .map(entry -> new UserInfo(entry.getKey(), 
entry.getValue().groups))
+                .collect(Collectors.toList());
+    }
+
+    private static String getProperty(ConfigurationBuildItem 
configurationBuildItem,
+            List<SystemPropertyBuildItem> systemPropertyBuildItems, String 
propertyKey) {
+
+        String propertyValue = configurationBuildItem
+                .getReadResult()
+                .getAllBuildTimeValues()
+                .get(propertyKey);
+
+        if (propertyValue == null) {
+            propertyValue = configurationBuildItem
+                    .getReadResult()
+                    .getBuildTimeRunTimeValues()
+                    .get(propertyKey);
+        } else {
+            return propertyValue;
+        }
+
+        if (propertyValue == null) {
+            propertyValue = configurationBuildItem
+                    .getReadResult()
+                    .getRunTimeDefaultValues()
+                    .get(propertyKey);
+        }
+
+        if (propertyValue != null) {
+            return propertyValue;
+        }
+
+        return systemPropertyBuildItems.stream().filter(property -> 
property.getKey().equals(propertyKey))
+                .findAny()
+                .map(SystemPropertyBuildItem::getValue).orElse(null);
     }
 }
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/deployment/RuntimeToolsQuarkusExtensionProcessor.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/deployment/RuntimeToolsQuarkusExtensionProcessor.java
index 8b80a76d0..80d3ce521 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/deployment/RuntimeToolsQuarkusExtensionProcessor.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/deployment/RuntimeToolsQuarkusExtensionProcessor.java
@@ -23,7 +23,7 @@ import io.quarkus.deployment.builditem.FeatureBuildItem;
 
 class RuntimeToolsQuarkusExtensionProcessor {
 
-    private static final String FEATURE = "kogito-processes-devui";
+    private static final String FEATURE = "jbpm-quarkus-devui";
 
     @BuildStep
     FeatureBuildItem feature() {
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/deployment/data/UserInfo.java
similarity index 89%
copy from 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
copy to 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/deployment/data/UserInfo.java
index 76d471ee0..142a15021 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/deployment/data/UserInfo.java
@@ -16,17 +16,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.runtime.tools.quarkus.extension.runtime.user;
+package org.kie.kogito.runtime.tools.quarkus.extension.deployment.data;
 
 import java.util.List;
 
-public class User {
+public class UserInfo {
 
     private String id;
 
     private List<String> groups;
 
-    public User(final String id,
+    public UserInfo(final String id,
             final List<String> groups) {
         this.id = id;
         this.groups = groups;
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/audit.html
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/audit.html
deleted file mode 100644
index 138e54cf1..000000000
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/audit.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-
--->
-{#include main fluid=true} {#style} .main-container { margin: 0; padding: 0; }
-#envelope-app { width: 100vw; height: calc(100vh - 98px); } {/style}
-{#title}Runtime UI{/title} {#body}
-<div id="envelope-app"></div>
-
-<script src="resources/webapp/standalone.js"></script>
-<script>
-  const devUI = RuntimeToolsDevUI.open({
-      container: document.getElementById("envelope-app"),
-      isDataIndexAvailable: {info:isProcessEnabled},
-      isTracingEnabled: {info:isTracingEnabled},
-      users: {info:userInfo.arrayRepresentation.raw},
-      dataIndexUrl: "{config:property('kogito.data-index.url') ?: ''}/graphql",
-      trustyServiceUrl: "{config:property('kogito.trusty.http.url') ?: 
'http://localhost:1336'}",
-      page: "Audit",
-      devUIUrl: {#if 
config:property('kogito.dev-ui.url')}"{config:property('kogito.dev-ui.url')}"{#else}window.location.origin{/if},
-      openApiPath: "{config:property('quarkus.smallrye-openapi.path') or 
'/q/openapi.json'}",
-      availablePages: ["Processes", "Jobs", "Tasks", "Forms"]
-  })
-</script>
-{/body} {/include}
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/embedded.html
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/embedded.html
deleted file mode 100644
index 4f61d2f9b..000000000
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/embedded.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-
--->
-{#if info:isProcessEnabled}
-<a href="{urlbase}/processInstances" class="badge badge-light">
-  <i class="fa fa-project-diagram fa-fw"></i>
-  Process Instances
-  <span id="processInstancesCount" class="badge badge-light" />
-</a>
-<br />
-<a href="{urlbase}/tasks" class="badge badge-light">
-  <i class="fa fa-tasks fa-fw"></i>
-  Tasks <span id="tasksCount" class="badge badge-light" />
-</a>
-<br />
-<a href="{urlbase}/jobs" class="badge badge-light">
-  <i class="fa fa-clock fa-fw"></i>
-  Jobs <span id="jobsCount" class="badge badge-light" />
-</a>
-<br />
-<a href="{urlbase}/forms" class="badge badge-light">
-  <i class="fab fa-wpforms fa-fw"></i>
-  Forms <span id="formsCount" class="badge badge-light" />
-</a>
-{/if} {#if info:isTracingEnabled}
-<a href="{urlbase}/audit" class="badge badge-light">
-  <i class="fab fa-wpforms fa-fw"></i>
-  Audit investigation <span id="auditCount" class="badge badge-light" />
-</a>
-{/if} {#if info:isProcessEnabled == false && info:isTracingEnabled == false}
-<p>No Kogito addons detected.</p>
-{/if} {#if info:isProcessEnabled}
-<script>
-  const graphqlUrl = "{config:property('kogito.data-index.url') ?: 
''}/graphql";
-
-  {|
-      const fillFormsCount = () => {
-          fetch("/forms/count")
-              .then(response => response.text())
-              .then(count => $("#formsCount").text(count))
-              .catch(error => {
-                  console.log("Error while trying to fetch forms count.");
-                  console.error(error);
-              });
-      };
-
-      const fillGraphqlCount = (callback, graphql) => {
-          fetch(graphqlUrl, {
-              method: "POST",
-              headers: {
-                  "Content-Type": "application/json",
-                  Accept: "application/json",
-              },
-              body: JSON.stringify({ query: graphql }),
-          })
-              .then(r => r.json())
-              .then(callback)
-              .catch(error => {
-                  console.log("Error while trying to fetch workflow instances 
count.");
-                  console.error(error);
-              });
-      };
-
-      fillGraphqlCount(function (json) {
-          $("#processInstancesCount").text(json.data.ProcessInstances.length)
-      }, "query getAllProcessesIds{  ProcessInstances{ id } }");
-
-      fillGraphqlCount(function (json) {
-          $("#tasksCount").text(json.data.UserTaskInstances.length)
-      }, "query getAllTasksIds{  UserTaskInstances{ id } }");
-
-      fillGraphqlCount(function (json) {
-          $("#jobsCount").text(json.data.Jobs.length)
-      }, "query getAllJobsIds{  Jobs{ id } }");
-
-      fillFormsCount("forms");
-  |}
-</script>
-{/if}
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/forms.html
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/forms.html
deleted file mode 100644
index 39297c432..000000000
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/forms.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-
--->
-{#include main fluid=true} {#style} .main-container { margin: 0; padding: 0; }
-#envelope-app { width: 100vw; height: calc(100vh - 98px); } {/style}
-{#title}Runtime UI{/title} {#body}
-<div id="envelope-app"></div>
-
-<script src="resources/webapp/standalone.js"></script>
-<script>
-  const devUI = RuntimeToolsDevUI.open({
-      container: document.getElementById("envelope-app"),
-      isDataIndexAvailable: {info:isProcessEnabled},
-      isTracingEnabled: {info:isTracingEnabled},
-      users: {info:userInfo.arrayRepresentation.raw},
-      dataIndexUrl: "{config:property('kogito.data-index.url') ?: ''}/graphql",
-      trustyServiceUrl: "{config:property('kogito.trusty.http.url') ?: 
'http://localhost:1336'}",
-      page: "Forms",
-      devUIUrl: {#if 
config:property('kogito.dev-ui.url')}"{config:property('kogito.dev-ui.url')}"{#else}window.location.origin{/if},
-      openApiPath: "{config:property('quarkus.smallrye-openapi.path') or 
'/q/openapi.json'}",
-      availablePages: ["Processes", "Jobs", "Tasks", "Forms"]
-  })
-</script>
-{/body} {/include}
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/jobs.html
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/jobs.html
deleted file mode 100644
index 4984ada1f..000000000
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/jobs.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-
--->
-{#include main fluid=true} {#style} .main-container { margin: 0; padding: 0; }
-#envelope-app { width: 100vw; height: calc(100vh - 98px); } {/style}
-{#title}Runtime UI{/title} {#body}
-<div id="envelope-app"></div>
-
-<script src="resources/webapp/standalone.js"></script>
-<script>
-  const devUI = RuntimeToolsDevUI.open({
-      container: document.getElementById("envelope-app"),
-      isDataIndexAvailable: {info:isProcessEnabled},
-      isTracingEnabled: {info:isTracingEnabled},
-      users: {info:userInfo.arrayRepresentation.raw},
-      dataIndexUrl: "{config:property('kogito.data-index.url') ?: ''}/graphql",
-      trustyServiceUrl: "{config:property('kogito.trusty.http.url') ?: 
'http://localhost:1336'}",
-      page: "JobsManagement",
-      devUIUrl: {#if 
config:property('kogito.dev-ui.url')}"{config:property('kogito.dev-ui.url')}"{#else}window.location.origin{/if},
-      openApiPath: "{config:property('quarkus.smallrye-openapi.path') or 
'/q/openapi.json'}",
-      availablePages: ["Processes", "Jobs", "Tasks", "Forms"]
-  })
-</script>
-{/body} {/include}
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/processInstances.html
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/processInstances.html
deleted file mode 100644
index 2a80ab0d6..000000000
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/processInstances.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-
--->
-{#include main fluid=true} {#style} .main-container { margin: 0; padding: 0; }
-#envelope-app { width: 100vw; height: calc(100vh - 98px); } {/style}
-{#title}Runtime UI{/title} {#body}
-<div id="envelope-app"></div>
-
-<script src="resources/webapp/standalone.js"></script>
-<script>
-  const devUI = RuntimeToolsDevUI.open({
-      container: document.getElementById("envelope-app"),
-      isDataIndexAvailable: {info:isProcessEnabled},
-      isTracingEnabled: {info:isTracingEnabled},
-      users: {info:userInfo.arrayRepresentation.raw},
-      dataIndexUrl: "{config:property('kogito.data-index.url') ?: ''}/graphql",
-      trustyServiceUrl: "{config:property('kogito.trusty.http.url') ?: 
'http://localhost:1336'}",
-      page: "Processes",
-      devUIUrl: {#if 
config:property('kogito.dev-ui.url')}"{config:property('kogito.dev-ui.url')}"{#else}window.location.origin{/if},
-      openApiPath: "{config:property('quarkus.smallrye-openapi.path') or 
'/q/openapi.json'}",
-      availablePages: ["Processes", "Jobs", "Tasks", "Forms"]
-  })
-</script>
-{/body} {/include}
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/tasks.html
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/tasks.html
deleted file mode 100644
index 95937835f..000000000
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-templates/tasks.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one
-    or more contributor license agreements.  See the NOTICE file
-    distributed with this work for additional information
-    regarding copyright ownership.  The ASF licenses this file
-    to you under the Apache License, Version 2.0 (the
-    "License"); you may not use this file except in compliance
-    with the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing,
-    software distributed under the License is distributed on an
-    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-    KIND, either express or implied.  See the License for the
-    specific language governing permissions and limitations
-    under the License.
-
--->
-{#include main fluid=true} {#style} .main-container { margin: 0; padding: 0; }
-#envelope-app { width: 100vw; height: calc(100vh - 98px); } {/style}
-{#title}Runtime UI{/title} {#body}
-<div id="envelope-app"></div>
-
-<script src="resources/webapp/standalone.js"></script>
-<script>
-  const devUI = RuntimeToolsDevUI.open({
-      container: document.getElementById("envelope-app"),
-      isDataIndexAvailable: {info:isProcessEnabled},
-      isTracingEnabled: {info:isTracingEnabled},
-      users: {info:userInfo.arrayRepresentation.raw},
-      dataIndexUrl: "{config:property('kogito.data-index.url') ?: ''}/graphql",
-      trustyServiceUrl: "{config:property('kogito.trusty.http.url') ?: 
'http://localhost:1336'}",
-      page: "TaskInbox",
-      devUIUrl: {#if 
config:property('kogito.dev-ui.url')}"{config:property('kogito.dev-ui.url')}"{#else}window.location.origin{/if},
-      openApiPath: "{config:property('quarkus.smallrye-openapi.path') or 
'/q/openapi.json'}",
-      availablePages: ["Processes", "Jobs", "Tasks", "Forms"]
-  })
-</script>
-{/body} {/include}
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-ui/qwc-jbpm-quarkus-devui.js
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-ui/qwc-jbpm-quarkus-devui.js
new file mode 100644
index 000000000..d4de6dd65
--- /dev/null
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension-deployment/src/main/resources/dev-ui/qwc-jbpm-quarkus-devui.js
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import {html, LitElement} from 'lit';
+import {
+    dataIndexUrl,
+    devUIUrl,
+    extensionBasePath,
+    isTracingEnabled,
+    openapiPath,
+    trustyServiceUrl,
+    userData
+} from 'build-time-data';
+import {RouterController} from 'router-controller';
+
+export class QwcJbpmQuarkusDevui extends LitElement {
+    _routerController = new RouterController(this);
+
+    constructor() {
+        super();
+    }
+
+    render() {
+        return html`
+            <div id="envelope-app" style="height: 100%"></div>`;
+    }
+
+    async connectedCallback() {
+        super.connectedCallback();
+        await this.updateComplete
+        if (!document.querySelector('#jbpm-devui-script')) {
+            const script = document.createElement('script');
+            script.setAttribute("async", "");
+            script.setAttribute("id", "jbpm-devui-script");
+            script.setAttribute("src", 
`${extensionBasePath}/resources/webapp/standalone.js`);
+            script.addEventListener("load", () => {
+                this.initUI()
+            })
+            document.head.appendChild(script);
+        } else {
+            this.initUI();
+        }
+    }
+
+    initUI() {
+        const metadata = this._routerController.getCurrentMetaData();
+        const container = this.renderRoot.querySelector("#envelope-app");
+        RuntimeToolsDevUI.open({
+            container: container,
+            isDataIndexAvailable: true,
+            isTracingEnabled: isTracingEnabled,
+            dataIndexUrl: `${dataIndexUrl ?? "http://localhost:8180"}/graphql`,
+            trustyServiceUrl: `${trustyServiceUrl ?? "http://localhost:1336"}`,
+            page: metadata.page ?? "Processes",
+            devUIUrl: `${devUIUrl ?? window.location.origin}`,
+            openApiPath: `${openapiPath ?? "q/openapi.json"}`,
+            availablePages: ["Processes", "Jobs", "Tasks", "Forms"],
+            users: userData ?? []
+        });
+    }
+}
+
+customElements.define('qwc-jbpm-quarkus-devui', QwcJbpmQuarkusDevui);
\ No newline at end of file
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/config/DevUIStaticArtifactsRecorder.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/config/DevUIStaticArtifactsRecorder.java
new file mode 100644
index 000000000..4c87f694c
--- /dev/null
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/config/DevUIStaticArtifactsRecorder.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.kie.kogito.runtime.tools.quarkus.extension.runtime.config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import io.quarkus.runtime.ShutdownContext;
+import io.quarkus.runtime.annotations.Recorder;
+import io.quarkus.vertx.http.runtime.devmode.FileSystemStaticHandler;
+import io.vertx.core.Handler;
+import io.vertx.ext.web.RoutingContext;
+
+@Recorder
+public class DevUIStaticArtifactsRecorder {
+
+    public Handler<RoutingContext> handler(String deploymentArtifactPath, 
ShutdownContext shutdownContext) {
+        List<FileSystemStaticHandler.StaticWebRootConfiguration> 
webRootConfigurations = new ArrayList<>();
+        webRootConfigurations.add(
+                new 
FileSystemStaticHandler.StaticWebRootConfiguration(deploymentArtifactPath, ""));
+
+        FileSystemStaticHandler fileSystemStaticHandler = new 
FileSystemStaticHandler(webRootConfigurations);
+
+        shutdownContext.addShutdownTask(new 
ShutdownContext.CloseRunnable(fileSystemStaticHandler));
+
+        return fileSystemStaticHandler;
+    }
+}
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/DataIndexClient.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/DataIndexClient.java
new file mode 100644
index 000000000..6a9af3c58
--- /dev/null
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/DataIndexClient.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex;
+
+import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
+import 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.jobs.JobsResponse;
+import 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.processes.ProcessInstancesResponse;
+import 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.tasks.TasksResponse;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.core.MediaType;
+
+import static 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.DataIndexClient.DATA_INDEX_CONFIG_KEY;
+
+@Path("/graphql")
+@RegisterRestClient(configKey = DATA_INDEX_CONFIG_KEY)
+@ApplicationScoped
+public interface DataIndexClient {
+
+    String DATA_INDEX_CONFIG_KEY = "kogito.data-index.url";
+
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    ProcessInstancesResponse queryProcessInstances(String query);
+
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    TasksResponse queryTasks(String query);
+
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    JobsResponse queryJobs(String query);
+}
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/jobs/Job.java
similarity index 74%
copy from 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
copy to 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/jobs/Job.java
index 76d471ee0..5601fb387 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/jobs/Job.java
@@ -16,27 +16,30 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.runtime.tools.quarkus.extension.runtime.user;
 
-import java.util.List;
+package org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.jobs;
 
-public class User {
+public class Job {
 
     private String id;
 
-    private List<String> groups;
+    public Job() {
+    }
 
-    public User(final String id,
-            final List<String> groups) {
+    public Job(final String id) {
         this.id = id;
-        this.groups = groups;
     }
 
     public String getId() {
         return id;
     }
 
-    public List<String> getGroups() {
-        return groups;
+    public void setId(final String id) {
+        this.id = id;
+    }
+
+    @Override
+    public String toString() {
+        return id;
     }
 }
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/UserInfo.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/jobs/JobsData.java
similarity index 57%
rename from 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/UserInfo.java
rename to 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/jobs/JobsData.java
index ec42ad9e3..0f1b0b9ff 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/UserInfo.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/jobs/JobsData.java
@@ -16,27 +16,30 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.runtime.tools.quarkus.extension.runtime.user;
+
+package org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.jobs;
 
 import java.util.List;
-import java.util.stream.Collectors;
 
-public class UserInfo {
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class JobsData {
 
-    private List<User> users;
+    @JsonProperty("Jobs")
+    private List<Job> jobsList;
+
+    public JobsData() {
+    }
 
-    public UserInfo(final List<User> users) {
-        this.users = users;
+    public JobsData(final List<Job> jobsList) {
+        this.jobsList = jobsList;
     }
 
-    public List<User> getUsers() {
-        return users;
+    public List<Job> getJobs() {
+        return jobsList;
     }
 
-    public String getArrayRepresentation() {
-        return "[ "
-                + users.stream().map(user -> "{ id: '" + user.getId() + "', 
groups: [" + user.getGroups().stream().map(group -> "'" + group + 
"'").collect(Collectors.joining(", ")) + "] }")
-                        .collect(Collectors.joining(", "))
-                + " ]";
+    public void setJobs(final List<Job> jobsList) {
+        this.jobsList = jobsList;
     }
 }
diff --git 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/ServerlessWorkflowQuarkusExtensionProcessor.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/jobs/JobsResponse.java
similarity index 68%
copy from 
kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/ServerlessWorkflowQuarkusExtensionProcessor.java
copy to 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/jobs/JobsResponse.java
index e6908ca5a..1286f7ba1 100644
--- 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/ServerlessWorkflowQuarkusExtensionProcessor.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/jobs/JobsResponse.java
@@ -16,17 +16,25 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.swf.tools.deployment;
 
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
+package org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.jobs;
 
-class ServerlessWorkflowQuarkusExtensionProcessor {
+public class JobsResponse {
 
-    private static final String FEATURE = "kogito-serverless-workflow-devui";
+    private JobsData data;
 
-    @BuildStep
-    FeatureBuildItem feature() {
-        return new FeatureBuildItem(FEATURE);
+    public JobsResponse() {
+    }
+
+    public JobsResponse(final JobsData data) {
+        this.data = data;
+    }
+
+    public JobsData getData() {
+        return data;
+    }
+
+    public void setData(final JobsData data) {
+        this.data = data;
     }
 }
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/processes/ProcessInstance.java
similarity index 73%
copy from 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
copy to 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/processes/ProcessInstance.java
index 76d471ee0..a25f9043a 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/processes/ProcessInstance.java
@@ -16,27 +16,30 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.runtime.tools.quarkus.extension.runtime.user;
 
-import java.util.List;
+package 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.processes;
 
-public class User {
+public class ProcessInstance {
 
     private String id;
 
-    private List<String> groups;
+    public ProcessInstance() {
+    }
 
-    public User(final String id,
-            final List<String> groups) {
+    public ProcessInstance(final String id) {
         this.id = id;
-        this.groups = groups;
     }
 
     public String getId() {
         return id;
     }
 
-    public List<String> getGroups() {
-        return groups;
+    public void setId(final String id) {
+        this.id = id;
+    }
+
+    @Override
+    public String toString() {
+        return id;
     }
 }
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/processes/ProcessInstancesData.java
similarity index 57%
copy from 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
copy to 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/processes/ProcessInstancesData.java
index 76d471ee0..4a74a6690 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/processes/ProcessInstancesData.java
@@ -16,27 +16,30 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.runtime.tools.quarkus.extension.runtime.user;
+
+package 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.processes;
 
 import java.util.List;
 
-public class User {
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class ProcessInstancesData {
 
-    private String id;
+    @JsonProperty("ProcessInstances")
+    private List<ProcessInstance> instances;
 
-    private List<String> groups;
+    public ProcessInstancesData() {
+    }
 
-    public User(final String id,
-            final List<String> groups) {
-        this.id = id;
-        this.groups = groups;
+    public ProcessInstancesData(final List<ProcessInstance> instances) {
+        this.instances = instances;
     }
 
-    public String getId() {
-        return id;
+    public List<ProcessInstance> getProcessInstances() {
+        return instances;
     }
 
-    public List<String> getGroups() {
-        return groups;
+    public void setProcessInstances(final List<ProcessInstance> 
processInstancesList) {
+        this.instances = processInstancesList;
     }
 }
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/processes/ProcessInstancesResponse.java
similarity index 64%
copy from 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
copy to 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/processes/ProcessInstancesResponse.java
index 76d471ee0..51a64885d 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/processes/ProcessInstancesResponse.java
@@ -16,27 +16,25 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.runtime.tools.quarkus.extension.runtime.user;
 
-import java.util.List;
+package 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.processes;
 
-public class User {
+public class ProcessInstancesResponse {
 
-    private String id;
+    private ProcessInstancesData data;
 
-    private List<String> groups;
+    public ProcessInstancesResponse() {
+    }
 
-    public User(final String id,
-            final List<String> groups) {
-        this.id = id;
-        this.groups = groups;
+    public ProcessInstancesResponse(final ProcessInstancesData data) {
+        this.data = data;
     }
 
-    public String getId() {
-        return id;
+    public ProcessInstancesData getData() {
+        return data;
     }
 
-    public List<String> getGroups() {
-        return groups;
+    public void setData(final ProcessInstancesData data) {
+        this.data = data;
     }
 }
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/tasks/Task.java
similarity index 74%
copy from 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
copy to 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/tasks/Task.java
index 76d471ee0..935eceaf7 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/tasks/Task.java
@@ -16,27 +16,30 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.runtime.tools.quarkus.extension.runtime.user;
 
-import java.util.List;
+package org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.tasks;
 
-public class User {
+public class Task {
 
     private String id;
 
-    private List<String> groups;
+    public Task() {
+    }
 
-    public User(final String id,
-            final List<String> groups) {
+    public Task(final String id) {
         this.id = id;
-        this.groups = groups;
     }
 
     public String getId() {
         return id;
     }
 
-    public List<String> getGroups() {
-        return groups;
+    public void setId(final String id) {
+        this.id = id;
+    }
+
+    @Override
+    public String toString() {
+        return id;
     }
 }
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/tasks/TaskResponseData.java
similarity index 62%
rename from 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
rename to 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/tasks/TaskResponseData.java
index 76d471ee0..016c095cd 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/User.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/tasks/TaskResponseData.java
@@ -16,27 +16,30 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.runtime.tools.quarkus.extension.runtime.user;
+
+package org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.tasks;
 
 import java.util.List;
 
-public class User {
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public class TaskResponseData {
 
-    private String id;
+    @JsonProperty("UserTaskInstances")
+    private List<Task> tasks;
 
-    private List<String> groups;
+    public TaskResponseData() {
+    }
 
-    public User(final String id,
-            final List<String> groups) {
-        this.id = id;
-        this.groups = groups;
+    public TaskResponseData(final List<Task> tasks) {
+        this.tasks = tasks;
     }
 
-    public String getId() {
-        return id;
+    public List<Task> getTasks() {
+        return tasks;
     }
 
-    public List<String> getGroups() {
-        return groups;
+    public void setTasks(final List<Task> userTaskInstancesList) {
+        this.tasks = userTaskInstancesList;
     }
 }
diff --git 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/ServerlessWorkflowQuarkusExtensionProcessor.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/tasks/TasksResponse.java
similarity index 68%
copy from 
kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/ServerlessWorkflowQuarkusExtensionProcessor.java
copy to 
runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/tasks/TasksResponse.java
index e6908ca5a..54a415dc5 100644
--- 
a/kogito-quarkus-serverless-workflow-devui-parent/kogito-quarkus-serverless-workflow-devui-deployment/src/main/java/org/kie/kogito/swf/tools/deployment/ServerlessWorkflowQuarkusExtensionProcessor.java
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/dataindex/tasks/TasksResponse.java
@@ -16,17 +16,21 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.kie.kogito.swf.tools.deployment;
 
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
+package org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.tasks;
 
-class ServerlessWorkflowQuarkusExtensionProcessor {
+public class TasksResponse {
 
-    private static final String FEATURE = "kogito-serverless-workflow-devui";
+    private TaskResponseData data;
 
-    @BuildStep
-    FeatureBuildItem feature() {
-        return new FeatureBuildItem(FEATURE);
+    public TasksResponse() {
+    }
+
+    public TaskResponseData getData() {
+        return data;
+    }
+
+    public void setData(final TaskResponseData data) {
+        this.data = data;
     }
 }
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/rpc/JBPMDevuiJsonRPCService.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/rpc/JBPMDevuiJsonRPCService.java
new file mode 100644
index 000000000..fd3f4070e
--- /dev/null
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/rpc/JBPMDevuiJsonRPCService.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.kie.kogito.runtime.tools.quarkus.extension.runtime.rpc;
+
+import java.util.function.Supplier;
+
+import org.eclipse.microprofile.rest.client.inject.RestClient;
+import 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.dataindex.DataIndexClient;
+import 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.forms.FormsStorage;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import io.smallrye.common.annotation.NonBlocking;
+
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+
+@ApplicationScoped
+public class JBPMDevuiJsonRPCService {
+    public static final String ALL_TASKS_IDS_QUERY = "{ \"operationName\": 
\"getAllTasksIds\", \"query\": \"query getAllTasksIds{  UserTaskInstances{ id } 
}\" }";
+    public static final String ALL_PROCESS_INSTANCES_IDS_QUERY = "{ 
\"operationName\": \"getAllProcessesIds\", \"query\": \"query 
getAllProcessesIds{  ProcessInstances{ id } }\" }";
+    public static final String ALL_JOBS_IDS_QUERY = "{ \"operationName\": 
\"getAllJobsIds\", \"query\": \"query getAllJobsIds{  Jobs{ id } }\" }";
+
+    private final ObjectMapper mapper;
+    private final DataIndexClient dataIndexClient;
+    private final FormsStorage formsStorage;
+
+    @Inject
+    public JBPMDevuiJsonRPCService(ObjectMapper mapper, @RestClient 
DataIndexClient dataIndexClient, FormsStorage formsStorage) {
+        this.mapper = mapper;
+        this.dataIndexClient = dataIndexClient;
+        this.formsStorage = formsStorage;
+    }
+
+    @NonBlocking
+    public String queryProcessInstancesCount() {
+        return doQuery(() -> 
this.dataIndexClient.queryProcessInstances(ALL_PROCESS_INSTANCES_IDS_QUERY).getData().getProcessInstances().size());
+    }
+
+    @NonBlocking
+    public String queryTasksCount() {
+        return doQuery(() -> 
this.dataIndexClient.queryTasks(ALL_TASKS_IDS_QUERY).getData().getTasks().size());
+    }
+
+    @NonBlocking
+    public String queryJobsCount() {
+        return doQuery(() -> 
this.dataIndexClient.queryJobs(ALL_JOBS_IDS_QUERY).getData().getJobs().size());
+    }
+
+    @NonBlocking
+    public String getFormsCount() {
+        return doQuery(this.formsStorage::getFormsCount);
+    }
+
+    private String doQuery(Supplier<Integer> countSupplier) {
+        try {
+            return String.valueOf(countSupplier.get());
+        } catch (Exception ex) {
+            return "-";
+        }
+    }
+}
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/UserInfoSupplier.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/UserInfoSupplier.java
deleted file mode 100644
index 2e41d5019..000000000
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/UserInfoSupplier.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.kie.kogito.runtime.tools.quarkus.extension.runtime.user;
-
-import java.util.Collections;
-import java.util.Map;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-
-import 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.config.UserConfig;
-
-public class UserInfoSupplier implements Supplier<UserInfo> {
-
-    private final Map<String, UserConfig> userConfigByUser;
-
-    public UserInfoSupplier(final Map<String, UserConfig> userConfigByUser) {
-        this.userConfigByUser = userConfigByUser;
-    }
-
-    public UserInfo get() {
-        if (userConfigByUser == null || userConfigByUser.size() == 0) {
-            return new UserInfo(Collections.emptyList());
-        }
-
-        return new UserInfo(userConfigByUser.entrySet().stream()
-                .map(entry -> new User(entry.getKey(), 
entry.getValue().groups)).collect(Collectors.toList()));
-    }
-}
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/resources/META-INF/quarkus-extension.yaml
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/resources/META-INF/quarkus-extension.yaml
index 1e6efa0ff..913453b40 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/resources/META-INF/quarkus-extension.yaml
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/resources/META-INF/quarkus-extension.yaml
@@ -17,7 +17,7 @@
 # under the License.
 #
 
-name: jBPM Runtime Tools Quarkus Dev UI
+name: jBPM Quarkus Dev UI
 description: Enables the jBPM Runtime tools in Quarkus Dev UI
 metadata:
   keywords:
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/resources/application.properties
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/resources/application.properties
index 44162f8bb..7f9b9ba1f 100644
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/resources/application.properties
+++ 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/main/resources/application.properties
@@ -17,4 +17,5 @@
 # under the License.
 #
 
-kogito.users.admin.groups=admin
\ No newline at end of file
+kogito.users.admin.groups=admin
+quarkus.rest-client."kogito.data-index.url".url=${kogito.data-index.url}/
diff --git 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/test/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/UserInfoSupplierTest.java
 
b/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/test/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/UserInfoSupplierTest.java
deleted file mode 100644
index 21249b3ac..000000000
--- 
a/runtime-tools-quarkus-extension-parent/runtime-tools-quarkus-extension/src/test/java/org/kie/kogito/runtime/tools/quarkus/extension/runtime/user/UserInfoSupplierTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.kie.kogito.runtime.tools.quarkus.extension.runtime.user;
-
-import java.util.*;
-
-import org.junit.jupiter.api.Test;
-import 
org.kie.kogito.runtime.tools.quarkus.extension.runtime.config.UserConfig;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-class UserInfoSupplierTest {
-
-    @Test
-    void testNullGetUserInfo() {
-        final UserInfoSupplier userInfoSupplier = new UserInfoSupplier(null);
-        final UserInfo userInfo = userInfoSupplier.get();
-
-        assertEquals(0, userInfo.getUsers().size());
-        assertEquals("[  ]", userInfo.getArrayRepresentation());
-    }
-
-    @Test
-    void testEmptyGetUserInfo() {
-        final UserInfoSupplier userInfoSupplier = new 
UserInfoSupplier(Collections.emptyMap());
-        final UserInfo userInfo = userInfoSupplier.get();
-
-        assertEquals(0, userInfo.getUsers().size());
-        assertEquals("[  ]", userInfo.getArrayRepresentation());
-    }
-
-    @Test
-    void testNotEmptyGetUserInfo() {
-        final UserConfig userA = new UserConfig();
-        userA.groups = Collections.singletonList("admin");
-        final UserConfig userB = new UserConfig();
-        userB.groups = Arrays.asList("admin", "user");
-
-        final Map<String, UserConfig> userConfigByUser = new HashMap<>();
-        userConfigByUser.put("userA", userA);
-        userConfigByUser.put("userB", userB);
-
-        final UserInfoSupplier userInfoSupplier = new 
UserInfoSupplier(userConfigByUser);
-        final UserInfo userInfo = userInfoSupplier.get();
-
-        assertEquals(2, userInfo.getUsers().size());
-        assertEquals("[ { id: 'userA', groups: ['admin'] }, { id: 'userB', 
groups: ['admin', 'user'] } ]", userInfo.getArrayRepresentation());
-    }
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to