diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml
index 49e63ebfa5..0c50380804 100644
--- a/config/alfresco/bootstrap-context.xml
+++ b/config/alfresco/bootstrap-context.xml
@@ -55,6 +55,7 @@
+
diff --git a/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-JBPMProcessKey.sql b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-JBPMProcessKey.sql
new file mode 100644
index 0000000000..76bc35de1c
--- /dev/null
+++ b/config/alfresco/dbscripts/upgrade/2.1/org.hibernate.dialect.Dialect/AlfrescoSchemaUpdate-2.1-JBPMProcessKey.sql
@@ -0,0 +1,22 @@
+--
+-- Title: Jbpm 3.2 Process Instance Key
+-- Database: Generic
+-- Since: V2.1 Schema 63
+-- Author: David Caruana
+--
+-- Please contact support@alfresco.com if you need assistance with the upgrade.
+--
+
+UPDATE JBPM_PROCESSINSTANCE SET KEY_ = '' || ID_ WHERE KEY_ IS NULL;
+
+--
+-- Record script finish
+--
+DELETE FROM alf_applied_patch WHERE id = 'patch.db-V2.1-JBPMProcessKey';
+INSERT INTO alf_applied_patch
+ (id, description, fixes_from_schema, fixes_to_schema, applied_to_schema, target_schema, applied_on_date, applied_to_server, was_executed, succeeded, report)
+ VALUES
+ (
+ 'patch.db-V2.1-JBPMProcessKey', 'Manually executed script upgrade V2.1: JBPM 3.2 Process Instance Key',
+ 0, 62, -1, 63, null, 'UNKOWN', 1, 1, 'Script completed'
+ );
\ No newline at end of file
diff --git a/config/alfresco/patch/patch-services-context.xml b/config/alfresco/patch/patch-services-context.xml
index 49a55049b2..14664122ad 100644
--- a/config/alfresco/patch/patch-services-context.xml
+++ b/config/alfresco/patch/patch-services-context.xml
@@ -873,15 +873,27 @@
-
-
- patch.AVMProperties
- patch.AVMProperties.description
- 0
- 61
- 62
-
-
-
-
+
+
+ patch.AVMProperties
+ patch.AVMProperties.description
+ 0
+ 61
+ 62
+
+
+
+
+
+
+ patch.db-V2.1-JBPMProcessKey
+ patch.schemaUpgradeScript.description
+ 0
+ 62
+ 63
+
+ classpath:alfresco/dbscripts/upgrade/2.1/${db.script.dialect}/AlfrescoSchemaUpdate-2.1-JBPMProcessKey.sql
+
+
+
diff --git a/config/alfresco/version.properties b/config/alfresco/version.properties
index 66f857d2c9..14c3d18bf3 100644
--- a/config/alfresco/version.properties
+++ b/config/alfresco/version.properties
@@ -19,4 +19,4 @@ version.build=@build-number@
# Schema number
-version.schema=62
+version.schema=63
diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java
index 60fb434750..429bba6126 100644
--- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java
+++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java
@@ -75,6 +75,7 @@ import org.alfresco.service.cmr.workflow.WorkflowTransition;
import org.alfresco.service.namespace.NamespaceException;
import org.alfresco.service.namespace.NamespaceService;
import org.alfresco.service.namespace.QName;
+import org.alfresco.util.GUID;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
@@ -554,6 +555,7 @@ public class JBPMEngine extends BPMEngine
GraphSession graphSession = context.getGraphSession();
ProcessDefinition processDefinition = getProcessDefinition(graphSession, workflowDefinitionId);
ProcessInstance processInstance = new ProcessInstance(processDefinition);
+ processInstance.setKey(GUID.generate());
// assign initial process context
ContextInstance processContext = processInstance.getContextInstance();