# Rescheduling Scheduled jobs

**URL:** <https://discuss.hangfire.io/t/rescheduling-scheduled-jobs/8532>\
**Category:** question\
**Created:** [June 23, 2021, 12:04am UTC](https://discuss.hangfire.io/t/rescheduling-scheduled-jobs/8532 "2021-06-23T00:04:55Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![kimsagro1](https://dub1.discourse-cdn.com/flex017/user_avatar/discuss.hangfire.io/kimsagro1/32/2602_2.png) [@kimsagro1](https://discuss.hangfire.io/u/kimsagro1)\
**Post date:** [June 23, 2021, 12:04am UTC](https://discuss.hangfire.io/t/rescheduling-scheduled-jobs/8532/1 "2021-06-23T00:04:55Z")

</div>

To reschedule scheduled jobs I am currently deleting the previous job and then scheduling a new one within a transaction so if the schedule fails it rolls back the delete:

```
using (var transaction = new TransactionScope(TransactionScopeOption.Required))
{
	BackgroundJob.Delete(jobId);
	BackgroundJob.Schedule(...);
}

```

This involves keeping storing the original arguments somewhere so I can reschedule with the original args.

I was wondering whether there was any ramifications to doing the following instead:

`new BackgroundJobClient().ChangeState(jobId, new ScheduledState(timespan), ScheduledState.StateName);`

This way there is no need to keep the original job arguments around and also is transactional.

Thoughts?
