Scheduled Classes 

Scheduled Apex

What is Scheduled Apex?

Scheduled Apex lets you run Apex code automatically at a specific time — daily, weekly, monthly, or even hourly. 

For example: 
you can run a batch job every day at 7:00 AM 
Or clear old records every Sunday night 

It’s like setting an alarm for Apex code! 

Structure of a Scheduled Class

To create a scheduled class, you must implement the Schedulable interface and define the execute() method: 

apex 

global class YourSchedulerClass implements Schedulable { 

 

    global void execute(SchedulableContext sc) { 

        // Logic to run on schedule 

    } 

} 

Example: Schedule Contact Batch Job Daily at 7 AM

Business Need:

We want to run the ContactBatchUpdate batch job automatically every day at 7 AM. 

Code (Scheduler Class): 

apex 

global class ContactBatchScheduler implements Schedulable { 

 

    global void execute(SchedulableContext sc) { 

        // Create batch object 

        ContactBatchUpdate batch = new ContactBatchUpdate(); 

 

        // Run the batch with batch size 200 

        Database.executeBatch(batch, 200); 

    } 

} 

How to Schedule This Job:

Paste this in the Anonymous Window to schedule it: 

apex 

String cronExp = ‘0 0 7 * * ?’; // Every day at 7 AM 

String jobName = ‘Daily Contact Update Batch’; 

 

ContactBatchScheduler sch = new ContactBatchScheduler(); 

System.schedule(jobName, cronExp, sch); 

Cron Expression Breakdown

Position Value Meaning
1 0 Seconds
2 0 Minutes
3 7 Hours (7 AM)
4 * Day of month
5 * Month
6 ? Any Day (Week)

 Cron Expression Format: 
Seconds Minutes Hours Day Month DayOfWeek 

Code Explanation:

Part Description
ContactBatchScheduler This is your scheduled class.
execute() This method runs when the schedule triggers.
System.schedule() Schedules the class with a CRON expression.
‘0 0 7 * * ?’ Means “run every day at 7 AM”.

Output:

Every day at 7:00 AM, Salesforce will: 
1.Run the ContactBatchUpdate class. 
2.Update all Contact records’ Description to “Updated by Batch” — automatically. 

Best Practices

Give meaningful names to classes and jobs.
Don’t write too many SOQL/DML statements inside execute(). 
Use Test.startTest() and Test.stopTest() in test classes.
Use try-catch to handle errors safely. 
Don’t schedule too many jobs — monitor limits! 

5 Practice Tasks for Scheduled Apex

1. Schedule a batch to update all Accounts daily at 6 PM

2. Run a batch every Monday to delete completed Tasks

3. Schedule a job to send reminders every 1st of the month

4. Run a batch every hour to check for inactive Users

5. Schedule a job to archive old records from a custom object weekly