When Salesforce Apex Flex Queues are used to submit batch jobs simultaneously, jobs placed in the Flex Queue appear in Holding status. This can create the impression that jobs are stuck, but Holding is the expected and normal status for batch jobs waiting in the Apex Flex Queue for system resources to become available. This article explains the difference between Holding, Queued, and InProgress batch job statuses and how the Flex Queue processes jobs.
A standard Batch Job that has not yet started will default to a status of Queued. The batch job currently being processed will be in InProgress status. Without Flex Queue, batch jobs are limited to five queued or active jobs simultaneously.
With Flex Queues, any jobs submitted for execution that are not processed immediately by the system go into Holding status and are placed in the Apex Flex Queue — a separate queue from the standard batch job queue. Up to 100 batch jobs can be in Holding status at one time. When system resources become available, the system picks up jobs from the Apex Flex Queue and moves them to the batch job queue. The status of these moved jobs changes from Holding to Queued. Queued jobs then execute when the system is ready to process new jobs, at which point they transition to InProgress status.
Without Flex Queue: Batch jobs are limited to 5 queued or active jobs simultaneously. With Flex Queue: Up to 100 additional jobs can be held in Holding status in the Apex Flex Queue, waiting for resources.
Since Batch is an asynchronous process, there is no ETA for the time it takes a job to move from Queued state to InProgress state. The timing depends entirely on system resource availability at that moment. Jobs in Holding status are not stuck — they are actively waiting in queue and will be processed when resources are available.
000386672

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.