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

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


The following commit(s) were added to refs/heads/main by this push:
     new 7d47e6d310 [incubator-kie-issues#2194] Extract process information 
from user task metadata Map (#4152)
7d47e6d310 is described below

commit 7d47e6d310493e56e226214b15e760fda3eb16d7
Author: Pere Fernández <[email protected]>
AuthorDate: Thu Dec 18 16:15:15 2025 +0100

    [incubator-kie-issues#2194] Extract process information from user task 
metadata Map (#4152)
    
    * [incubator-kie-issues#2194] Extract process information from user task 
metadata Map
    
    * - licenses
    
    * - licenses
    
    * - fix tests
    
    ---------
    
    Co-authored-by: Pere Fernández <[email protected]>
---
 .../jpa/mapper/UserTaskInstanceEntityMapper.java   |  35 +++++
 .../usertask/jpa/model/TaskProcessInfoEntity.java  |  96 ++++++++++++++
 .../usertask/jpa/model/UserTaskInstanceEntity.java |  11 ++
 .../h2/V1.0.5__jBPM_usertasks_add_process_info.sql | 104 +++++++++++++++
 .../V1.0.5__jBPM_usertasks_add_process_info.sql    |  61 +++++++++
 .../UserTaskInstanceJobDescriptionBuilder.java     |  34 ++++-
 .../org/kie/kogito/usertask/UserTaskInstance.java  |   8 +-
 .../org/kie/kogito/usertask/model/ProcessInfo.java | 143 +++++++++++++++++++++
 .../org/kie/kogito/usertask/view/UserTaskView.java |  13 ++
 .../kogito/event/impl/adapter/AdapterHelper.java   |  32 +++--
 .../UserTaskStateEventDataEventAdapter.java        |   7 +-
 .../handler/UserTaskKogitoWorkItemHandler.java     |  18 ++-
 ...erTaskKogitoWorkItemHandlerProcessListener.java |   2 +-
 .../usertask/impl/DefaultUserTaskInstance.java     |  23 +++-
 .../kogito/usertask/impl/UserTaskServiceImpl.java  |   1 +
 .../org/jbpm/userTask/jpa/it/UserTaskInputs.java   |   6 +-
 .../jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java  |  12 +-
 .../jbpm/userTask/jpa/it/UserTaskOutputsIT.java    |   6 +-
 .../usertask/jpa/it/WsHumanTaskLifeCycleIT.java    |   8 +-
 .../org/jbpm/userTask/jpa/it/UserTaskInputs.java   |   6 +-
 .../jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java  |  12 +-
 .../jbpm/userTask/jpa/it/UserTaskOutputsIT.java    |   6 +-
 .../usertask/jpa/it/WsHumanTaskLifeCycleIT.java    |   6 +-
 23 files changed, 584 insertions(+), 66 deletions(-)

diff --git 
a/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/mapper/UserTaskInstanceEntityMapper.java
 
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/mapper/UserTaskInstanceEntityMapper.java
index c183ad0f22..7a5cf9de13 100644
--- 
a/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/mapper/UserTaskInstanceEntityMapper.java
+++ 
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/mapper/UserTaskInstanceEntityMapper.java
@@ -23,10 +23,12 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
+import org.jbpm.usertask.jpa.model.TaskProcessInfoEntity;
 import org.jbpm.usertask.jpa.model.UserTaskInstanceEntity;
 import org.kie.kogito.usertask.UserTaskInstance;
 import org.kie.kogito.usertask.impl.DefaultUserTaskInstance;
 import org.kie.kogito.usertask.lifecycle.UserTaskState;
+import org.kie.kogito.usertask.model.ProcessInfo;
 
 public class UserTaskInstanceEntityMapper {
 
@@ -47,6 +49,24 @@ public class UserTaskInstanceEntityMapper {
         
entity.setExternalReferenceId(userTaskInstance.getExternalReferenceId());
         entity.setUserTaskId(userTaskInstance.getUserTaskId());
 
+        TaskProcessInfoEntity processInfoEntity = entity.getProcessInfo();
+
+        if (processInfoEntity == null) {
+            processInfoEntity = new TaskProcessInfoEntity();
+            entity.setProcessInfo(processInfoEntity);
+        }
+
+        ProcessInfo processInfo = userTaskInstance.getProcessInfo();
+        if (processInfo != null) {
+            
processInfoEntity.setProcessInstanceId(processInfo.getProcessInstanceId());
+            processInfoEntity.setProcessId(processInfo.getProcessId());
+            
processInfoEntity.setProcessVersion(processInfo.getProcessVersion());
+
+            
processInfoEntity.setParentProcessInstanceId(processInfo.getParentProcessInstanceId());
+            
processInfoEntity.setRootProcessInstanceId(processInfo.getRootProcessInstanceId());
+            processInfoEntity.setRootProcessId(processInfo.getRootProcessId());
+        }
+
         entity.setActualOwner(userTaskInstance.getActualOwner());
         
entity.setPotentialUsers(Set.copyOf(userTaskInstance.getPotentialUsers()));
         
entity.setPotentialGroups(Set.copyOf(userTaskInstance.getPotentialGroups()));
@@ -70,6 +90,21 @@ public class UserTaskInstanceEntityMapper {
         instance.setTaskDescription(entity.getTaskDescription());
         instance.setTaskPriority(entity.getTaskPriority());
 
+        TaskProcessInfoEntity processInfoEntity = entity.getProcessInfo();
+
+        if (processInfoEntity != null) {
+            ProcessInfo processInfo = ProcessInfo.builder()
+                    
.withProcessInstanceId(processInfoEntity.getProcessInstanceId())
+                    .withProcessId(processInfoEntity.getProcessId())
+                    .withProcessVersion(processInfoEntity.getProcessVersion())
+                    
.withParentProcessInstanceId(processInfoEntity.getParentProcessInstanceId())
+                    
.withRootProcessInstanceId(processInfoEntity.getRootProcessInstanceId())
+                    .withRootProcessId(processInfoEntity.getRootProcessId())
+                    .build();
+
+            instance.setProcessInfo(processInfo);
+        }
+
         UserTaskState.TerminationType terminationType = 
entity.getTerminationType() == null ? null : 
UserTaskState.TerminationType.valueOf(entity.getTerminationType());
         instance.setStatus(UserTaskState.of(entity.getStatus(), 
terminationType));
 
diff --git 
a/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/TaskProcessInfoEntity.java
 
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/TaskProcessInfoEntity.java
new file mode 100644
index 0000000000..0aac9553fa
--- /dev/null
+++ 
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/TaskProcessInfoEntity.java
@@ -0,0 +1,96 @@
+/*
+ * 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.jbpm.usertask.jpa.model;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Embeddable;
+
+@Embeddable
+public class TaskProcessInfoEntity {
+
+    @Column(name = "process_instance_id")
+    private String processInstanceId;
+
+    @Column(name = "process_id")
+    private String processId;
+
+    @Column(name = "process_version")
+    private String processVersion;
+
+    @Column(name = "parent_process_instance_id")
+    private String parentProcessInstanceId;
+
+    @Column(name = "root_process_instance_id")
+    private String rootProcessInstanceId;
+
+    @Column(name = "root_process_id")
+    private String rootProcessId;
+
+    public TaskProcessInfoEntity() {
+    }
+
+    public String getProcessInstanceId() {
+        return processInstanceId;
+    }
+
+    public void setProcessInstanceId(String processInstanceId) {
+        this.processInstanceId = processInstanceId;
+    }
+
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    public String getProcessVersion() {
+        return processVersion;
+    }
+
+    public void setProcessVersion(String processVersion) {
+        this.processVersion = processVersion;
+    }
+
+    public String getParentProcessInstanceId() {
+        return parentProcessInstanceId;
+    }
+
+    public void setParentProcessInstanceId(String parentProcessInstanceId) {
+        this.parentProcessInstanceId = parentProcessInstanceId;
+    }
+
+    public String getRootProcessInstanceId() {
+        return rootProcessInstanceId;
+    }
+
+    public void setRootProcessInstanceId(String rootProcessInstanceId) {
+        this.rootProcessInstanceId = rootProcessInstanceId;
+    }
+
+    public String getRootProcessId() {
+        return rootProcessId;
+    }
+
+    public void setRootProcessId(String rootProcessId) {
+        this.rootProcessId = rootProcessId;
+    }
+}
diff --git 
a/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/UserTaskInstanceEntity.java
 
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/UserTaskInstanceEntity.java
index d8bb19991a..2f3e760c1a 100644
--- 
a/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/UserTaskInstanceEntity.java
+++ 
b/addons/common/jbpm-usertask-storage-jpa/src/main/java/org/jbpm/usertask/jpa/model/UserTaskInstanceEntity.java
@@ -74,6 +74,9 @@ public class UserTaskInstanceEntity {
     @Column(name = "external_reference_id")
     private String externalReferenceId;
 
+    @Embedded
+    private TaskProcessInfoEntity processInfo;
+
     @ElementCollection(fetch = FetchType.EAGER)
     @CollectionTable(name = "jbpm_user_tasks_potential_users", joinColumns = 
@JoinColumn(name = "task_id", foreignKey = @ForeignKey(name = 
"fk_jbpm_user_tasks_potential_users_tid")))
     @Column(name = "user_id", nullable = false)
@@ -136,6 +139,14 @@ public class UserTaskInstanceEntity {
         this.id = id;
     }
 
+    public TaskProcessInfoEntity getProcessInfo() {
+        return processInfo;
+    }
+
+    public void setProcessInfo(TaskProcessInfoEntity taskProcessInfoEntity) {
+        this.processInfo = taskProcessInfoEntity;
+    }
+
     public String getActualOwner() {
         return actualOwner;
     }
diff --git 
a/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/h2/V1.0.5__jBPM_usertasks_add_process_info.sql
 
b/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/h2/V1.0.5__jBPM_usertasks_add_process_info.sql
new file mode 100644
index 0000000000..fb4c7c935a
--- /dev/null
+++ 
b/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/h2/V1.0.5__jBPM_usertasks_add_process_info.sql
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ */
+
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_id VARCHAR(255);
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_version VARCHAR(255);
+ALTER TABLE jbpm_user_tasks ADD COLUMN parent_process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN root_process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN root_process_id VARCHAR(255);
+
+UPDATE jbpm_user_tasks t
+SET t.process_instance_id = (
+    SELECT TRIM(BOTH '"' FROM m.metadata_value)
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'ProcessInstanceId'
+)
+WHERE EXISTS (
+    SELECT 1
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'ProcessInstanceId'
+      AND m.metadata_value IS NOT NULL
+);
+
+UPDATE jbpm_user_tasks t
+SET t.process_id = (
+    SELECT TRIM(BOTH '"' FROM m.metadata_value)
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'ProcessId'
+)
+WHERE EXISTS (
+    SELECT 1
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'ProcessId'
+      AND m.metadata_value IS NOT NULL
+);
+
+UPDATE jbpm_user_tasks t
+SET t.process_version = (
+    SELECT TRIM(BOTH '"' FROM m.metadata_value)
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'ProcessVersion'
+)
+WHERE EXISTS (
+    SELECT 1
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'ProcessVersion'
+      AND m.metadata_value IS NOT NULL
+);
+
+UPDATE jbpm_user_tasks t
+SET t.parent_process_instance_id = (
+    SELECT TRIM(BOTH '"' FROM m.metadata_value)
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'ParentProcessInstanceId'
+)
+WHERE EXISTS (
+    SELECT 1
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'ParentProcessInstanceId'
+      AND m.metadata_value IS NOT NULL
+);
+
+UPDATE jbpm_user_tasks t
+SET t.root_process_instance_id = (
+    SELECT TRIM(BOTH '"' FROM m.metadata_value)
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'RootProcessInstanceId'
+)
+WHERE EXISTS (
+    SELECT 1
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'RootProcessInstanceId'
+      AND m.metadata_value IS NOT NULL
+);
+
+UPDATE jbpm_user_tasks t
+SET t.root_process_id = (
+    SELECT TRIM(BOTH '"' FROM m.metadata_value)
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'RootProcessId'
+)
+WHERE EXISTS (
+    SELECT 1
+    FROM jbpm_user_tasks_metadata m
+    WHERE m.task_id = t.id AND m.metadata_name = 'RootProcessId'
+      AND m.metadata_value IS NOT NULL
+);
+
diff --git 
a/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/postgresql/V1.0.5__jBPM_usertasks_add_process_info.sql
 
b/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/postgresql/V1.0.5__jBPM_usertasks_add_process_info.sql
new file mode 100644
index 0000000000..5c5249689d
--- /dev/null
+++ 
b/addons/common/jbpm-usertask-storage-jpa/src/main/resources/kie-flyway/db/user-tasks/postgresql/V1.0.5__jBPM_usertasks_add_process_info.sql
@@ -0,0 +1,61 @@
+/*
+ * 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.
+ */
+
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_id VARCHAR(255);
+ALTER TABLE jbpm_user_tasks ADD COLUMN process_version VARCHAR(255);
+ALTER TABLE jbpm_user_tasks ADD COLUMN parent_process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN root_process_instance_id VARCHAR(50);
+ALTER TABLE jbpm_user_tasks ADD COLUMN root_process_id VARCHAR(255);
+
+UPDATE jbpm_user_tasks t
+SET process_instance_id = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'ProcessInstanceId'
+    AND m.metadata_value IS NOT NULL;
+
+UPDATE jbpm_user_tasks t
+SET process_id = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'ProcessId'
+    AND m.metadata_value IS NOT NULL;
+
+UPDATE jbpm_user_tasks t
+SET process_version = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'ProcessVersion'
+  AND m.metadata_value IS NOT NULL;
+
+UPDATE jbpm_user_tasks t
+SET parent_process_instance_id = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'ParentProcessInstanceId'
+  AND m.metadata_value IS NOT NULL;
+
+UPDATE jbpm_user_tasks t
+SET root_process_instance_id = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'RootProcessInstanceId'
+  AND m.metadata_value IS NOT NULL;
+
+UPDATE jbpm_user_tasks t
+SET root_process_id = TRIM(BOTH '"' FROM m.metadata_value)
+FROM jbpm_user_tasks_metadata m
+WHERE t.id = m.task_id AND m.metadata_name = 'RootProcessId'
+  AND m.metadata_value IS NOT NULL;
\ No newline at end of file
diff --git 
a/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescriptionBuilder.java
 
b/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescriptionBuilder.java
index 0f94d0a96c..2e03474447 100644
--- 
a/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescriptionBuilder.java
+++ 
b/api/kogito-api/src/main/java/org/kie/kogito/jobs/descriptors/UserTaskInstanceJobDescriptionBuilder.java
@@ -22,6 +22,7 @@ import java.util.Map;
 import java.util.UUID;
 
 import org.kie.kogito.jobs.ExpirationTime;
+import org.kie.kogito.usertask.model.ProcessInfo;
 
 public class UserTaskInstanceJobDescriptionBuilder {
 
@@ -29,6 +30,11 @@ public class UserTaskInstanceJobDescriptionBuilder {
     private ExpirationTime expirationTime;
     private Integer priority = ProcessInstanceJobDescription.DEFAULT_PRIORITY;
     private String userTaskInstanceId;
+    private String processInstanceId;
+    private ProcessInfo processInfo;
+    private String processId;
+    private String rootProcessInstanceId;
+    private String rootProcessId;
     private Map<String, Object> metadata;
 
     public UserTaskInstanceJobDescriptionBuilder id(String id) {
@@ -55,6 +61,26 @@ public class UserTaskInstanceJobDescriptionBuilder {
         return this;
     }
 
+    public UserTaskInstanceJobDescriptionBuilder processInstanceId(String 
processInstanceId) {
+        this.processInstanceId = processInstanceId;
+        return this;
+    }
+
+    public UserTaskInstanceJobDescriptionBuilder processId(String processId) {
+        this.processId = processId;
+        return this;
+    }
+
+    public UserTaskInstanceJobDescriptionBuilder rootProcessInstanceId(String 
rootProcessInstanceId) {
+        this.rootProcessInstanceId = rootProcessInstanceId;
+        return this;
+    }
+
+    public UserTaskInstanceJobDescriptionBuilder rootProcessId(String 
rootProcessId) {
+        this.rootProcessId = rootProcessId;
+        return this;
+    }
+
     public UserTaskInstanceJobDescriptionBuilder metadata(Map<String, Object> 
metadata) {
         this.metadata = metadata;
         return this;
@@ -66,10 +92,10 @@ public class UserTaskInstanceJobDescriptionBuilder {
                 expirationTime,
                 priority,
                 userTaskInstanceId,
-                (String) this.metadata.get("ProcessId"),
-                (String) this.metadata.get("ProcessInstanceId"),
+                processId,
+                processInstanceId,
                 (String) this.metadata.get("NodeInstanceId"),
-                (String) this.metadata.get("RootProcessInstanceId"),
-                (String) this.metadata.get("RootProcessId"));
+                rootProcessInstanceId,
+                rootProcessId);
     }
 }
diff --git 
a/api/kogito-api/src/main/java/org/kie/kogito/usertask/UserTaskInstance.java 
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/UserTaskInstance.java
index 49cd332bd2..45a507bb53 100644
--- a/api/kogito-api/src/main/java/org/kie/kogito/usertask/UserTaskInstance.java
+++ b/api/kogito-api/src/main/java/org/kie/kogito/usertask/UserTaskInstance.java
@@ -27,11 +27,7 @@ import org.kie.kogito.auth.IdentityProvider;
 import org.kie.kogito.jobs.descriptors.UserTaskInstanceJobDescription;
 import org.kie.kogito.usertask.lifecycle.UserTaskLifeCycle;
 import org.kie.kogito.usertask.lifecycle.UserTaskState;
-import org.kie.kogito.usertask.model.Attachment;
-import org.kie.kogito.usertask.model.Comment;
-import org.kie.kogito.usertask.model.DeadlineInfo;
-import org.kie.kogito.usertask.model.Notification;
-import org.kie.kogito.usertask.model.Reassignment;
+import org.kie.kogito.usertask.model.*;
 
 public interface UserTaskInstance {
 
@@ -41,6 +37,8 @@ public interface UserTaskInstance {
 
     UserTaskState getStatus();
 
+    ProcessInfo getProcessInfo();
+
     String getUserTaskId();
 
     boolean hasActualOwner();
diff --git 
a/api/kogito-api/src/main/java/org/kie/kogito/usertask/model/ProcessInfo.java 
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/model/ProcessInfo.java
new file mode 100644
index 0000000000..f6eb13c0f9
--- /dev/null
+++ 
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/model/ProcessInfo.java
@@ -0,0 +1,143 @@
+/*
+ * 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.usertask.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ProcessInfo {
+    private String processInstanceId;
+    private String processId;
+    private String processVersion;
+
+    private String parentProcessInstanceId;
+    private String rootProcessId;
+    private String rootProcessInstanceId;
+
+    private ProcessInfo() {
+    }
+
+    private ProcessInfo(String processInstanceId, String processId, String 
processVersion) {
+        this.processInstanceId = processInstanceId;
+        this.processId = processId;
+        this.processVersion = processVersion;
+    }
+
+    public String getProcessInstanceId() {
+        return processInstanceId;
+    }
+
+    public void setProcessInstanceId(String processInstanceId) {
+        this.processInstanceId = processInstanceId;
+    }
+
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    public String getProcessVersion() {
+        return processVersion;
+    }
+
+    public void setProcessVersion(String processVersion) {
+        this.processVersion = processVersion;
+    }
+
+    public String getParentProcessInstanceId() {
+        return parentProcessInstanceId;
+    }
+
+    public void setParentProcessInstanceId(String parentProcessInstanceId) {
+        this.parentProcessInstanceId = parentProcessInstanceId;
+    }
+
+    public String getRootProcessId() {
+        return rootProcessId;
+    }
+
+    public void setRootProcessId(String rootProcessId) {
+        this.rootProcessId = rootProcessId;
+    }
+
+    public String getRootProcessInstanceId() {
+        return rootProcessInstanceId;
+    }
+
+    public void setRootProcessInstanceId(String rootProcessInstanceId) {
+        this.rootProcessInstanceId = rootProcessInstanceId;
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private String processId;
+        private String processVersion;
+        private String processInstanceId;
+
+        private String parentProcessInstanceId;
+        private String rootProcessId;
+        private String rootProcessInstanceId;
+
+        public Builder withProcessId(String processId) {
+            this.processId = processId;
+            return this;
+        }
+
+        public Builder withProcessVersion(String processVersion) {
+            this.processVersion = processVersion;
+            return this;
+        }
+
+        public Builder withProcessInstanceId(String processInstanceId) {
+            this.processInstanceId = processInstanceId;
+            return this;
+        }
+
+        public Builder withParentProcessInstanceId(String 
parentProcessInstanceId) {
+            this.parentProcessInstanceId = parentProcessInstanceId;
+            return this;
+        }
+
+        public Builder withRootProcessId(String rootProcessId) {
+            this.rootProcessId = rootProcessId;
+            return this;
+        }
+
+        public Builder withRootProcessInstanceId(String rootProcessInstanceId) 
{
+            this.rootProcessInstanceId = rootProcessInstanceId;
+            return this;
+        }
+
+        public ProcessInfo build() {
+            ProcessInfo processInfo = new ProcessInfo(processInstanceId, 
processId, processVersion);
+
+            processInfo.setRootProcessInstanceId(rootProcessInstanceId);
+            processInfo.setRootProcessId(rootProcessId);
+            processInfo.setParentProcessInstanceId(parentProcessInstanceId);
+            return processInfo;
+        }
+    }
+
+}
diff --git 
a/api/kogito-api/src/main/java/org/kie/kogito/usertask/view/UserTaskView.java 
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/view/UserTaskView.java
index 6c7c47f345..1d0922a2ee 100644
--- 
a/api/kogito-api/src/main/java/org/kie/kogito/usertask/view/UserTaskView.java
+++ 
b/api/kogito-api/src/main/java/org/kie/kogito/usertask/view/UserTaskView.java
@@ -22,7 +22,11 @@ import java.util.Map;
 import java.util.Set;
 
 import org.kie.kogito.usertask.lifecycle.UserTaskState;
+import org.kie.kogito.usertask.model.ProcessInfo;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
 public class UserTaskView {
 
     private String id;
@@ -30,6 +34,7 @@ public class UserTaskView {
     private String userTaskId;
 
     private UserTaskState status;
+    private ProcessInfo processInfo;
 
     private String taskName;
     private String taskDescription;
@@ -55,6 +60,14 @@ public class UserTaskView {
         this.id = id;
     }
 
+    public ProcessInfo getProcessInfo() {
+        return processInfo;
+    }
+
+    public void setProcessInfo(ProcessInfo processInfo) {
+        this.processInfo = processInfo;
+    }
+
     public String getUserTaskId() {
         return userTaskId;
     }
diff --git 
a/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/AdapterHelper.java
 
b/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/AdapterHelper.java
index 5fe0c4f1c8..11ec932068 100644
--- 
a/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/AdapterHelper.java
+++ 
b/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/AdapterHelper.java
@@ -21,11 +21,13 @@ package org.kie.kogito.event.impl.adapter;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Optional;
 
 import org.kie.kogito.event.process.ProcessInstanceEventMetadata;
 import org.kie.kogito.event.usertask.UserTaskInstanceEventMetadata;
 import org.kie.kogito.internal.process.runtime.KogitoWorkflowProcessInstance;
 import org.kie.kogito.usertask.UserTaskInstance;
+import org.kie.kogito.usertask.model.ProcessInfo;
 
 public class AdapterHelper {
 
@@ -42,21 +44,27 @@ public class AdapterHelper {
         return metadata;
     }
 
-    public static Map<String, Object> buildUserTaskMetadata(UserTaskInstance 
pi) {
+    public static Map<String, Object> buildUserTaskMetadata(UserTaskInstance 
uti) {
 
         Map<String, Object> metadata = new HashMap<>();
-        
metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_ID_META_DATA, 
pi.getMetadata().get("ProcessInstanceId"));
-        metadata.put(ProcessInstanceEventMetadata.PROCESS_VERSION_META_DATA, 
pi.getMetadata().get("ProcessVersion"));
-        metadata.put(ProcessInstanceEventMetadata.PROCESS_ID_META_DATA, 
pi.getMetadata().get("ProcessId"));
-        
metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_STATE_META_DATA, 
String.valueOf(pi.getMetadata().get("ProcessInstanceState")));
-        metadata.put(ProcessInstanceEventMetadata.PROCESS_TYPE_META_DATA, 
pi.getMetadata().get("ProcessType"));
-        
metadata.put(ProcessInstanceEventMetadata.PARENT_PROCESS_INSTANCE_ID_META_DATA, 
pi.getMetadata().get("ParentProcessInstanceId"));
-        metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_ID_META_DATA, 
pi.getMetadata().get("RootProcessId"));
-        
metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_INSTANCE_ID_META_DATA, 
pi.getMetadata().get("RootProcessInstanceId"));
 
-        
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_ID_META_DATA, 
pi.getId());
-        
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_REFERENCE_ID_META_DATA,
 pi.getUserTask().getReferenceName());
-        
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_STATE_META_DATA, 
pi.getStatus().getName());
+        Optional<ProcessInfo> optionalProcessInfo = 
Optional.ofNullable(uti.getProcessInfo());
+
+        // Conditionally adding process info metadata, it will only be 
available after the user task has been completely initialized
+        optionalProcessInfo.ifPresent(processInfo -> {
+            
metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_ID_META_DATA, 
processInfo.getProcessInstanceId());
+            
metadata.put(ProcessInstanceEventMetadata.PROCESS_VERSION_META_DATA, 
processInfo.getProcessVersion());
+            metadata.put(ProcessInstanceEventMetadata.PROCESS_ID_META_DATA, 
processInfo.getProcessId());
+            
metadata.put(ProcessInstanceEventMetadata.PARENT_PROCESS_INSTANCE_ID_META_DATA, 
processInfo.getParentProcessInstanceId());
+            
metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_ID_META_DATA, 
processInfo.getRootProcessId());
+            
metadata.put(ProcessInstanceEventMetadata.ROOT_PROCESS_INSTANCE_ID_META_DATA, 
processInfo.getRootProcessInstanceId());
+            
metadata.put(ProcessInstanceEventMetadata.PROCESS_INSTANCE_STATE_META_DATA, 
String.valueOf(uti.getMetadata().get("ProcessInstanceState")));
+            metadata.put(ProcessInstanceEventMetadata.PROCESS_TYPE_META_DATA, 
uti.getMetadata().get("ProcessType"));
+        });
+
+        
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_ID_META_DATA, 
uti.getId());
+        
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_REFERENCE_ID_META_DATA,
 uti.getUserTask().getReferenceName());
+        
metadata.put(UserTaskInstanceEventMetadata.USER_TASK_INSTANCE_STATE_META_DATA, 
uti.getStatus().getName());
 
         return metadata;
     }
diff --git 
a/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/UserTaskStateEventDataEventAdapter.java
 
b/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/UserTaskStateEventDataEventAdapter.java
index 9df94e473d..5c6c0d4f8a 100644
--- 
a/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/UserTaskStateEventDataEventAdapter.java
+++ 
b/api/kogito-events-core/src/main/java/org/kie/kogito/event/impl/adapter/UserTaskStateEventDataEventAdapter.java
@@ -21,11 +21,13 @@ package org.kie.kogito.event.impl.adapter;
 import java.util.Date;
 import java.util.Map;
 import java.util.Objects;
+import java.util.Optional;
 
 import org.kie.kogito.event.DataEvent;
 import org.kie.kogito.event.usertask.UserTaskInstanceStateDataEvent;
 import org.kie.kogito.event.usertask.UserTaskInstanceStateEventBody;
 import org.kie.kogito.usertask.events.UserTaskStateEvent;
+import org.kie.kogito.usertask.model.ProcessInfo;
 
 public class UserTaskStateEventDataEventAdapter extends 
AbstractDataEventAdapter {
 
@@ -55,12 +57,13 @@ public class UserTaskStateEventDataEventAdapter extends 
AbstractDataEventAdapter
                 .state(event.getNewStatus().getName())
                 .actualOwner(event.getUserTaskInstance().getActualOwner())
                 .eventType(isTransition(event) ? 
event.getNewStatus().getName() : "Modify")
-                .processInstanceId((String) 
event.getUserTaskInstance().getMetadata().get("ProcessInstanceId"))
+                
.processInstanceId(Optional.ofNullable(event.getUserTaskInstance().getProcessInfo()).map(ProcessInfo::getProcessInstanceId).orElse(null))
                 .slaDueDate(event.getUserTaskInstance().getSlaDueDate());
 
         UserTaskInstanceStateEventBody body = builder.build();
         UserTaskInstanceStateDataEvent utEvent =
-                new 
UserTaskInstanceStateDataEvent(AdapterHelper.buildSource(getConfig().service(), 
(String) event.getUserTaskInstance().getMetadata().get("ProcessId")),
+                new UserTaskInstanceStateDataEvent(
+                        AdapterHelper.buildSource(getConfig().service(), 
Optional.ofNullable(event.getUserTaskInstance().getProcessInfo()).map(ProcessInfo::getProcessId).orElse(null)),
                         getConfig().addons().toString(),
                         event.getEventUser(),
                         metadata, body);
diff --git 
a/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java
 
b/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java
index 39692cda5c..9495f7859e 100644
--- 
a/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java
+++ 
b/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandler.java
@@ -35,6 +35,7 @@ import org.kie.kogito.usertask.UserTasks;
 import org.kie.kogito.usertask.impl.DefaultUserTaskInstance;
 import org.kie.kogito.usertask.impl.lifecycle.DefaultUserTaskLifeCycle;
 import org.kie.kogito.usertask.impl.model.DeadlineHelper;
+import org.kie.kogito.usertask.model.ProcessInfo;
 
 import static java.util.Collections.emptyMap;
 import static java.util.Optional.ofNullable;
@@ -92,15 +93,20 @@ public class UserTaskKogitoWorkItemHandler extends 
DefaultKogitoWorkItemHandler
             task.setTaskPriority(priority != null ? priority.toString() : 
null);
             task.setSlaDueDate(workItem.getNodeInstance().getSlaDueDate());
 
+            ProcessInfo processInfo = ProcessInfo.builder()
+                    
.withProcessInstanceId(workItem.getProcessInstance().getId())
+                    
.withProcessId(workItem.getProcessInstance().getProcessId())
+                    
.withProcessVersion(workItem.getProcessInstance().getProcessVersion())
+                    
.withRootProcessInstanceId(workItem.getProcessInstance().getRootProcessInstanceId())
+                    
.withRootProcessId(workItem.getProcessInstance().getRootProcessId())
+                    
.withParentProcessInstanceId(workItem.getProcessInstance().getParentProcessInstanceId())
+                    .build();
+
+            instance.setProcessInfo(processInfo);
+
             Map<String, Object> metadata = new HashMap<>();
-            metadata.put("ProcessId", 
workItem.getProcessInstance().getProcessId());
             metadata.put("ProcessType", 
workItem.getProcessInstance().getProcess().getType());
-            metadata.put("ProcessVersion", 
workItem.getProcessInstance().getProcessVersion());
-            metadata.put("ProcessInstanceId", 
workItem.getProcessInstance().getId());
             metadata.put("ProcessInstanceState", 
workItem.getProcessInstance().getState());
-            metadata.put("RootProcessId", 
workItem.getProcessInstance().getRootProcessId());
-            metadata.put("RootProcessInstanceId", 
workItem.getProcessInstance().getRootProcessInstanceId());
-            metadata.put("ParentProcessInstanceId", 
workItem.getProcessInstance().getParentProcessInstanceId());
             metadata.put("NodeInstanceId", workItem.getNodeInstance().getId());
             metadata.put("Skippable", workItem.getParameters().get(SKIPPABLE));
 
diff --git 
a/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandlerProcessListener.java
 
b/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandlerProcessListener.java
index 8f5a2de5d6..b4c89d7c1b 100644
--- 
a/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandlerProcessListener.java
+++ 
b/jbpm/jbpm-usertask-workitem/src/main/java/org/kie/kogito/jbpm/usertask/handler/UserTaskKogitoWorkItemHandlerProcessListener.java
@@ -53,7 +53,7 @@ public class UserTaskKogitoWorkItemHandlerProcessListener 
implements UserTaskEve
         }
 
         LOG.debug("onUserTaskState {} on complete work item", event);
-        String processInstanceId = (String) 
event.getUserTaskInstance().getMetadata().get("ProcessInstanceId");
+        String processInstanceId = 
event.getUserTaskInstance().getProcessInfo().getProcessInstanceId();
 
         
processes.processByProcessInstanceId(processInstanceId).get().instances().findById(processInstanceId).ifPresent(pi
 -> {
             Map<String, Object> data = new 
HashMap<>(event.getUserTaskInstance().getOutputs());
diff --git 
a/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/DefaultUserTaskInstance.java
 
b/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/DefaultUserTaskInstance.java
index 15fc3d721f..f6a6733b0b 100644
--- 
a/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/DefaultUserTaskInstance.java
+++ 
b/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/DefaultUserTaskInstance.java
@@ -46,12 +46,7 @@ import org.kie.kogito.usertask.impl.model.DeadlineHelper;
 import org.kie.kogito.usertask.lifecycle.UserTaskLifeCycle;
 import org.kie.kogito.usertask.lifecycle.UserTaskState;
 import org.kie.kogito.usertask.lifecycle.UserTaskTransitionToken;
-import org.kie.kogito.usertask.model.Attachment;
-import org.kie.kogito.usertask.model.Comment;
-import org.kie.kogito.usertask.model.DeadlineInfo;
-import org.kie.kogito.usertask.model.Notification;
-import org.kie.kogito.usertask.model.Reassignment;
-import org.kie.kogito.usertask.model.ScheduleInfo;
+import org.kie.kogito.usertask.model.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -72,6 +67,8 @@ public class DefaultUserTaskInstance implements 
UserTaskInstance {
 
     private String userTaskId;
 
+    private ProcessInfo processInfo;
+
     private UserTaskState status;
     private String actualOwner;
     private String taskName;
@@ -212,6 +209,16 @@ public class DefaultUserTaskInstance implements 
UserTaskInstance {
         return this.id;
     }
 
+    @Override
+    public ProcessInfo getProcessInfo() {
+        return this.processInfo;
+    }
+
+    public void setProcessInfo(ProcessInfo processInfo) {
+        this.processInfo = processInfo;
+        updatePersistence();
+    }
+
     public void setStatus(UserTaskState status) {
         this.status = status;
     }
@@ -712,6 +719,10 @@ public class DefaultUserTaskInstance implements 
UserTaskInstance {
                     .generateId()
                     .expirationTime(expirationTime)
                     .userTaskInstanceId(this.id)
+                    .processId(this.processInfo.getProcessId())
+                    .processInstanceId(this.processInfo.getProcessInstanceId())
+                    
.rootProcessInstanceId(this.processInfo.getRootProcessInstanceId())
+                    .rootProcessId(this.processInfo.getRootProcessId())
                     .metadata(this.metadata)
                     .build());
         }
diff --git 
a/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/UserTaskServiceImpl.java
 
b/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/UserTaskServiceImpl.java
index 675ea6d943..8e36786592 100644
--- 
a/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/UserTaskServiceImpl.java
+++ 
b/jbpm/jbpm-usertask/src/main/java/org/kie/kogito/usertask/impl/UserTaskServiceImpl.java
@@ -57,6 +57,7 @@ public class UserTaskServiceImpl implements UserTaskService {
     private UserTaskView toUserTaskView(UserTaskInstance instance) {
         UserTaskView view = new UserTaskView();
         view.setId(instance.getId());
+        view.setProcessInfo(instance.getProcessInfo());
         view.setUserTaskId(instance.getUserTaskId());
         view.setStatus(instance.getStatus());
         view.setTaskName(instance.getTaskName());
diff --git 
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
 
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
index 13084ed839..115fba7609 100644
--- 
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
+++ 
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
@@ -71,10 +71,10 @@ public class UserTaskInputs extends BaseUserTaskIT {
                 .body("inputs.traveller.lastName", 
equalTo(traveller.getLastName()))
                 .body("inputs.traveller.email", equalTo(traveller.getEmail()))
                 .body("inputs.traveller.nationality", 
equalTo(traveller.getNationality()))
+                .body("processInfo.processInstanceId", equalTo(pid))
+                .body("processInfo.processId", equalTo(PROCESS_ID))
+                .body("processInfo.processVersion", equalTo("1.0"))
                 .body("metadata.ProcessType", equalTo("BPMN"))
-                .body("metadata.ProcessVersion", equalTo("1.0"))
-                .body("metadata.ProcessId", equalTo(PROCESS_ID))
-                .body("metadata.ProcessInstanceId", equalTo(pid))
                 .body("metadata.ProcessInstanceState", equalTo(1));
 
         Traveller newTraveller = new Traveller("Ned", "Stark", 
"[email protected]", "Northern", new Address("main street", "Winterfell", 
"10005", "WF"));
diff --git 
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
 
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
index 5cdfaaf939..6e70e50c5d 100644
--- 
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
+++ 
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
@@ -78,10 +78,10 @@ public class UserTaskLifeCycleIT extends BaseUserTaskIT {
                 .body("inputs.traveller.lastName", 
equalTo(traveller.getLastName()))
                 .body("inputs.traveller.email", equalTo(traveller.getEmail()))
                 .body("inputs.traveller.nationality", 
equalTo(traveller.getNationality()))
+                .body("processInfo.processInstanceId", equalTo(pid))
+                .body("processInfo.processId", equalTo(PROCESS_ID))
+                .body("processInfo.processVersion", equalTo("1.0"))
                 .body("metadata.ProcessType", equalTo("BPMN"))
-                .body("metadata.ProcessVersion", equalTo("1.0"))
-                .body("metadata.ProcessId", equalTo(PROCESS_ID))
-                .body("metadata.ProcessInstanceId", equalTo(pid))
                 .body("metadata.ProcessInstanceState", equalTo(1))
                 .body("metadata.Lifecycle", equalTo("kogito"));
 
@@ -137,10 +137,10 @@ public class UserTaskLifeCycleIT extends BaseUserTaskIT {
                 .body("inputs.traveller.lastName", 
equalTo(traveller.getLastName()))
                 .body("inputs.traveller.email", equalTo(traveller.getEmail()))
                 .body("inputs.traveller.nationality", 
equalTo(traveller.getNationality()))
+                .body("processInfo.processInstanceId", equalTo(pid))
+                .body("processInfo.processId", equalTo(PROCESS_ID))
+                .body("processInfo.processVersion", equalTo("1.0"))
                 .body("metadata.ProcessType", equalTo("BPMN"))
-                .body("metadata.ProcessVersion", equalTo("1.0"))
-                .body("metadata.ProcessId", equalTo(PROCESS_ID))
-                .body("metadata.ProcessInstanceId", equalTo(pid))
                 .body("metadata.ProcessInstanceState", equalTo(1));
 
         // Manager is excluded for the secondLineApproval Task, he shouldn't 
be able to work on the task
diff --git 
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
 
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
index 1192545ac6..6ff84d23f3 100644
--- 
a/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
+++ 
b/quarkus/integration-tests/integration-tests-quarkus-usertasks/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
@@ -71,10 +71,10 @@ public class UserTaskOutputsIT extends BaseUserTaskIT {
                 .body("inputs.traveller.lastName", 
equalTo(traveller.getLastName()))
                 .body("inputs.traveller.email", equalTo(traveller.getEmail()))
                 .body("inputs.traveller.nationality", 
equalTo(traveller.getNationality()))
+                .body("processInfo.processInstanceId", equalTo(pid))
+                .body("processInfo.processId", equalTo(PROCESS_ID))
+                .body("processInfo.processVersion", equalTo("1.0"))
                 .body("metadata.ProcessType", equalTo("BPMN"))
-                .body("metadata.ProcessVersion", equalTo("1.0"))
-                .body("metadata.ProcessId", equalTo(PROCESS_ID))
-                .body("metadata.ProcessInstanceId", equalTo(pid))
                 .body("metadata.ProcessInstanceState", equalTo(1));
 
         Traveller newTraveller = new Traveller("Ned", "Stark", 
"[email protected]", "Northern", new Address("main street", "Winterfell", 
"10005", "WF"));
diff --git 
a/quarkus/integration-tests/integration-tests-quarkus-wshumantasks/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
 
b/quarkus/integration-tests/integration-tests-quarkus-wshumantasks/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
index aeadea89fc..34e3addab3 100644
--- 
a/quarkus/integration-tests/integration-tests-quarkus-wshumantasks/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
+++ 
b/quarkus/integration-tests/integration-tests-quarkus-wshumantasks/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
@@ -28,6 +28,7 @@ import org.junit.jupiter.api.Test;
 import org.kie.kogito.testcontainers.quarkus.PostgreSqlQuarkusTestResource;
 import org.kie.kogito.usertask.model.TransitionInfo;
 
+import io.quarkus.test.TestTransaction;
 import io.quarkus.test.common.QuarkusTestResource;
 import io.quarkus.test.junit.QuarkusIntegrationTest;
 import io.restassured.RestAssured;
@@ -41,6 +42,7 @@ import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.Matchers.emptyOrNullString;
 
 @QuarkusIntegrationTest
+@TestTransaction
 @QuarkusTestResource(value = PostgreSqlQuarkusTestResource.class, 
restrictToAnnotatedClass = true)
 public class WsHumanTaskLifeCycleIT {
     public static final String USER_TASKS_ENDPOINT = "/usertasks/instance";
@@ -525,12 +527,12 @@ public class WsHumanTaskLifeCycleIT {
                 .body("status.name", equalTo(state))
                 .body("taskName", equalTo("Task"))
                 .body("potentialUsers", hasItems(potentialUsers))
+                .body("processInfo.processInstanceId", equalTo(pid))
+                .body("processInfo.processId", equalTo(processId))
+                .body("processInfo.processVersion", equalTo("1.0"))
                 .body("metadata.Skippable", equalTo("true"))
                 .body("metadata.Lifecycle", equalTo("ws-human-task"))
                 .body("metadata.ProcessType", equalTo("BPMN"))
-                .body("metadata.ProcessVersion", equalTo("1.0"))
-                .body("metadata.ProcessId", equalTo(processId))
-                .body("metadata.ProcessInstanceId", equalTo(pid))
                 .body("metadata.ProcessInstanceState", equalTo(1));
     }
 
diff --git 
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
 
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
index 0357f04023..0565ba610c 100644
--- 
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
+++ 
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskInputs.java
@@ -72,10 +72,10 @@ public class UserTaskInputs extends BaseUserTaskIT {
                 .body("inputs.traveller.lastName", 
equalTo(traveller.getLastName()))
                 .body("inputs.traveller.email", equalTo(traveller.getEmail()))
                 .body("inputs.traveller.nationality", 
equalTo(traveller.getNationality()))
+                .body("processInfo.processInstanceId", equalTo(pid))
+                .body("processInfo.processId", equalTo(PROCESS_ID))
+                .body("processInfo.processVersion", equalTo("1.0"))
                 .body("metadata.ProcessType", equalTo("BPMN"))
-                .body("metadata.ProcessVersion", equalTo("1.0"))
-                .body("metadata.ProcessId", equalTo(PROCESS_ID))
-                .body("metadata.ProcessInstanceId", equalTo(pid))
                 .body("metadata.ProcessInstanceState", equalTo(1));
 
         Traveller newTraveller = new Traveller("Ned", "Stark", 
"[email protected]", "Northern", new Address("main street", "Winterfell", 
"10005", "WF"));
diff --git 
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
 
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
index 483035f87c..35614a5768 100644
--- 
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
+++ 
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskLifeCycleIT.java
@@ -79,10 +79,10 @@ public class UserTaskLifeCycleIT extends BaseUserTaskIT {
                 .body("inputs.traveller.lastName", 
equalTo(traveller.getLastName()))
                 .body("inputs.traveller.email", equalTo(traveller.getEmail()))
                 .body("inputs.traveller.nationality", 
equalTo(traveller.getNationality()))
+                .body("processInfo.processInstanceId", equalTo(pid))
+                .body("processInfo.processId", equalTo(PROCESS_ID))
+                .body("processInfo.processVersion", equalTo("1.0"))
                 .body("metadata.ProcessType", equalTo("BPMN"))
-                .body("metadata.ProcessVersion", equalTo("1.0"))
-                .body("metadata.ProcessId", equalTo(PROCESS_ID))
-                .body("metadata.ProcessInstanceId", equalTo(pid))
                 .body("metadata.ProcessInstanceState", equalTo(1))
                 .body("metadata.Lifecycle", equalTo("kogito"));
 
@@ -138,10 +138,10 @@ public class UserTaskLifeCycleIT extends BaseUserTaskIT {
                 .body("inputs.traveller.lastName", 
equalTo(traveller.getLastName()))
                 .body("inputs.traveller.email", equalTo(traveller.getEmail()))
                 .body("inputs.traveller.nationality", 
equalTo(traveller.getNationality()))
+                .body("processInfo.processInstanceId", equalTo(pid))
+                .body("processInfo.processId", equalTo(PROCESS_ID))
+                .body("processInfo.processVersion", equalTo("1.0"))
                 .body("metadata.ProcessType", equalTo("BPMN"))
-                .body("metadata.ProcessVersion", equalTo("1.0"))
-                .body("metadata.ProcessId", equalTo(PROCESS_ID))
-                .body("metadata.ProcessInstanceId", equalTo(pid))
                 .body("metadata.ProcessInstanceState", equalTo(1));
 
         // Manager is excluded for the secondLineApproval Task, he shouldn't 
be able to work on the task
diff --git 
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
 
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
index b89e19989a..35cffb144d 100644
--- 
a/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
+++ 
b/springboot/integration-tests/integration-tests-springboot-usertasks-it/src/test/java/org/jbpm/userTask/jpa/it/UserTaskOutputsIT.java
@@ -72,10 +72,10 @@ public class UserTaskOutputsIT extends BaseUserTaskIT {
                 .body("inputs.traveller.lastName", 
equalTo(traveller.getLastName()))
                 .body("inputs.traveller.email", equalTo(traveller.getEmail()))
                 .body("inputs.traveller.nationality", 
equalTo(traveller.getNationality()))
+                .body("processInfo.processInstanceId", equalTo(pid))
+                .body("processInfo.processId", equalTo(PROCESS_ID))
+                .body("processInfo.processVersion", equalTo("1.0"))
                 .body("metadata.ProcessType", equalTo("BPMN"))
-                .body("metadata.ProcessVersion", equalTo("1.0"))
-                .body("metadata.ProcessId", equalTo(PROCESS_ID))
-                .body("metadata.ProcessInstanceId", equalTo(pid))
                 .body("metadata.ProcessInstanceState", equalTo(1));
 
         Traveller newTraveller = new Traveller("Ned", "Stark", 
"[email protected]", "Northern", new Address("main street", "Winterfell", 
"10005", "WF"));
diff --git 
a/springboot/integration-tests/integration-tests-springboot-wshumantasks-it/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
 
b/springboot/integration-tests/integration-tests-springboot-wshumantasks-it/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
index 3e5e605131..22eb5fcaa3 100644
--- 
a/springboot/integration-tests/integration-tests-springboot-wshumantasks-it/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
+++ 
b/springboot/integration-tests/integration-tests-springboot-wshumantasks-it/src/test/java/org/jbpm/usertask/jpa/it/WsHumanTaskLifeCycleIT.java
@@ -536,12 +536,12 @@ public class WsHumanTaskLifeCycleIT {
                 .body("status.name", equalTo(state))
                 .body("taskName", equalTo("Task"))
                 .body("potentialUsers", hasItems(potentialUsers))
+                .body("processInfo.processInstanceId", equalTo(pid))
+                .body("processInfo.processId", equalTo(processId))
+                .body("processInfo.processVersion", equalTo("1.0"))
                 .body("metadata.Skippable", equalTo("true"))
                 .body("metadata.Lifecycle", equalTo("ws-human-task"))
                 .body("metadata.ProcessType", equalTo("BPMN"))
-                .body("metadata.ProcessVersion", equalTo("1.0"))
-                .body("metadata.ProcessId", equalTo(processId))
-                .body("metadata.ProcessInstanceId", equalTo(pid))
                 .body("metadata.ProcessInstanceState", equalTo(1));
     }
 


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

Reply via email to