 <p>I was given a task to invoke the batch job one by one.Each job depends on another. First job result needs to execute the consequent job program. I was searching how to pass the data after job execution. I found that this ExecutionContextPromotionListener comes in handy.</p> <p>1) I have added a bean for "ExecutionContextPromotionListener" like below</p> <pre><code>@Bean public ExecutionContextPromotionListener promotionListener() { ExecutionContextPromotionListener listener = new ExecutionContextPromotionListener(); listener.setKeys( new String[] { "entityRef" } ); return listener; } </code></pre> <p>2) Then I attached one of the listener to my Steps</p> <pre><code>Step step = builder.faultTolerant() .skipPolicy( policy ) .listener( writer ) .listener( promotionListener() ) .listener( skiplistener ) .stream( skiplistener ) .build(); </code></pre> <p>3) I have added stepExecution as a reference in my Writer step implementation and populated in the Beforestep </p> <pre><code>@BeforeStep public void saveStepExecution( StepExecution stepExecution ) { this.stepExecution = stepExecution; } </code></pre> <p>4) in the end of my writer step, i populated the values in the stepexecution as the keys like below</p> <pre><code>lStepContext.put( "entityRef", lMap ); </code></pre> <p>5) After the job execution, I retrieved the values from the <code>lExecution.getExecutionContext()</code> and populated as job response.</p> <p>6) from the job response object, I will get the values and populate the required values in the rest of the jobs.</p> <p>The above code is for promoting the data from the steps to ExecutionContext using ExecutionContextPromotionListener. It can done for in any steps.</p>