Index: modules/pvm/src/main/java/org/jbpm/pvm/internal/migration/InstanceMigrator.java =================================================================== --- modules/pvm/src/main/java/org/jbpm/pvm/internal/migration/InstanceMigrator.java (revision 6341) +++ modules/pvm/src/main/java/org/jbpm/pvm/internal/migration/InstanceMigrator.java (working copy) @@ -100,7 +100,9 @@ .list(); int startIndex = calculateStartIndex(processDefinitions.size() - 1, migrationDescriptor); int endIndex = calculateEndIndex(processDefinitions.size() - 1, migrationDescriptor); - if (startIndex > endIndex) startIndex = endIndex; + if (startIndex > endIndex || startIndex < 0) { + startIndex = endIndex; + } return processDefinitions.subList(startIndex, endIndex); } Index: modules/test-db/src/test/java/org/jbpm/test/migration/InstanceMigratorTest.java =================================================================== --- modules/test-db/src/test/java/org/jbpm/test/migration/InstanceMigratorTest.java (revision 6341) +++ modules/test-db/src/test/java/org/jbpm/test/migration/InstanceMigratorTest.java (working copy) @@ -240,8 +240,12 @@ } return result; } - + public void testNoProcessInstanceForMigration() { + ProcessDefinition pd2 = deployProcessDefinition("foobar", versionWithWildcardVersionRange); + repositoryService.deleteDeploymentCascade(pd2.getDeploymentId()); + } + public void testNoMigration() { ProcessDefinition pd1 = deployProcessDefinition("foobar", originalVersion); ProcessInstance pi1 = startAndSignal(pd1, "a");