Bulkification in Apex Batch for Salesforce


Salesforce provides robust tools for handling large volumes of data, and Apex Batch is a powerful feature that allows developers to process data in batches, optimizing performance and resource utilization. However, as the volume of records increases, the importance of bulkification becomes paramount to ensure efficient and scalable operations. In this blog, we'll explore when to use an Apex batch, why bulkification is crucial, delve into a real-life scenario, and provide a bulkified Apex batch for implementation.

Bulkification in Apex Batch For Salesforce

When to Use Apex Batch:

Apex Batch is used when dealing with large datasets that may exceed the governor limits imposed by Salesforce for synchronous processing. It's an ideal solution for scenarios where extensive data manipulation, computation, or integration tasks need to be performed, ensuring that the operation doesn't disrupt the user experience and stays within platform limits.

Why Bulkification is Important:

Bulkification is the practice of optimizing code to handle large volumes of data efficiently. In the context of Apex Batch, bulkifying ensures that the code processes records in batches rather than individually. This not only reduces the number of queries and DML operations but also minimizes the risk of hitting governor limits, leading to improved performance and a more scalable solution.

Real-Life Scenario:

Imagine a scenario where a company needs to update the status of a large number of opportunities based on certain criteria. Without bulkification, attempting to update each opportunity individually could result in hitting governor limits and poor performance. Bulkification becomes crucial in this scenario to handle the large volume of opportunities efficiently and avoid performance degradation.

Bulkified Apex Batch:

Below is a sample Apex Batch that demonstrates how to bulkify the process of updating opportunity records based on specific criteria.


    public class BulkUpdateOpportunityBatch implements Database.Batchable {

    public Database.QueryLocator start(Database.BatchableContext context) {
        // Query opportunities that meet the criteria
        return Database.getQueryLocator('SELECT Id, Name, StageName FROM Opportunity 
        WHERE Your_Custom_Criteria__c = true');

    public void execute(Database.BatchableContext context, List opportunities) {
        // Bulkified processing logic
        List opportunitiesToUpdate = new List();
        for (Opportunity opp : opportunities) {
            // Apply your custom logic here
            opp.StageName = 'New Stage';

        // Update the opportunities in bulk
        update opportunitiesToUpdate;

    public void finish(Database.BatchableContext context) {
        // Optional: Perform any post-processing logic here


Code Fragment 1: Sample Apex batch for bulkification

Bulkified Apex Batch

Figure 1: Apex Batch that shows how to bulkify the process of updating opportunity records based on specific criteria.

In this example, the batch processes opportunities that meet specific criteria and updates them in bulk. The key is to collect the records in a list and then perform a bulk update operation, ensuring efficiency and adherence to governor limits.


Apex Batch is a valuable tool for handling large datasets in Salesforce, and bulkification is the key to making batch processes efficient and scalable. By adopting bulkification practices, developers can optimize their code, avoid governor limit issues, and ensure smooth processing of large volumes of data. The provided bulkified Apex Batch serves as a foundation for building scalable solutions that deliver stellar performance in real-world scenarios.

For any queries please reach out to support@astreait.com