// suspend the job definition
managementService.suspendJobDefinitionByProcessDefinitionId(processDefinition.getId(), false, new Date(oneWeekFromStartTime));
// then
// the job definition is still active
JobDefinitionQuery jobDefinitionQuery = managementService.createJobDefinitionQuery();
assertEquals(1, jobDefinitionQuery.active().count());
assertEquals(0, jobDefinitionQuery.suspended().count());
// there exists a job for the delayed suspension execution
JobQuery jobQuery = managementService.createJobQuery();
Job delayedSuspensionJob = jobQuery.timers().active().singleResult();
assertNotNull(delayedSuspensionJob);
// execute job
managementService.executeJob(delayedSuspensionJob.getId());
// the job definition should be suspended
assertEquals(0, jobDefinitionQuery.active().count());
assertEquals(1, jobDefinitionQuery.suspended().count());
JobDefinition suspendedJobDefinition = jobDefinitionQuery.suspended().singleResult();
assertEquals(jobDefinition.getId(), suspendedJobDefinition.getId());
assertTrue(suspendedJobDefinition.isSuspended());
// the corresponding job is still active