There will be a data export happening from our org for large number of objects and records using a cloud based ETL tool.
We have a business scenario where we need to make sure that there is no data update made in the org for a window of 48 hours during which cloud based ETL tool will be exporting data out of salesforce.
We are making sure no user updates data through profile level login hours.
We have lots of Batch, Schedule, Queue apex as well as usage of @future in classes. We need to make sure these asynchronous jobs do not make data changes.
What are some ways to achieve the same with minimum effort ?
One way we are considering is deleting all the scheduled jobs before the 48 hour window and then recreating the scheduled jobs after the window.
Scheduled jobs are owned by an Integration User, is it a good idea to disable the Integration User ?
Will we also need to abort currently running jobs ? Will it be a good idea to do this :
for ( AsyncApexJob aJob : [ Select id ,Status, ApexClass.Name from AsyncApexJob where Status!='Aborted' and Status!='Completed' ] ) {
System.AbortJob(aJob.Id);
}