diff --git a/asterix-bad/src/main/java/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.java b/asterix-bad/src/main/java/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.java
index f6f17f3..e71ed60 100644
--- a/asterix-bad/src/main/java/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.java
+++ b/asterix-bad/src/main/java/org/apache/asterix/bad/lang/statement/ChannelSubscribeStatement.java
@@ -208,13 +208,13 @@
                 InsertStatement insert = new InsertStatement(new Identifier(dataverse),
                         new Identifier(subscriptionsDatasetName), subscriptionTuple, varCounter, resultVar, accessor);
                 ((QueryTranslator) statementExecutor).handleInsertUpsertStatement(tempMdProvider, insert, hcc,
-                        resultSet, resultDelivery, null, stats, false, null, null, null);
+                        resultSet, resultDelivery, null, stats, false, requestParameters, null, null);
             } else {
                 //To update an existing subscription
                 UpsertStatement upsert = new UpsertStatement(new Identifier(dataverse),
                         new Identifier(subscriptionsDatasetName), subscriptionTuple, varCounter, null, null);
                 ((QueryTranslator) statementExecutor).handleInsertUpsertStatement(tempMdProvider, upsert, hcc,
-                        resultSet, resultDelivery, null, stats, false, null, null, null);
+                        resultSet, resultDelivery, null, stats, false, requestParameters, null, null);
             }
 
             MetadataManager.INSTANCE.commitTransaction(mdTxnCtx);
diff --git a/asterix-bad/src/main/java/org/apache/asterix/bad/recovery/BADGlobalRecoveryManager.java b/asterix-bad/src/main/java/org/apache/asterix/bad/recovery/BADGlobalRecoveryManager.java
index 3fab8ba..953742f 100644
--- a/asterix-bad/src/main/java/org/apache/asterix/bad/recovery/BADGlobalRecoveryManager.java
+++ b/asterix-bad/src/main/java/org/apache/asterix/bad/recovery/BADGlobalRecoveryManager.java
@@ -21,6 +21,7 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.UUID;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.logging.Level;
@@ -32,6 +33,7 @@
 import org.apache.asterix.app.result.ResultReader;
 import org.apache.asterix.app.translator.DefaultStatementExecutorFactory;
 import org.apache.asterix.app.translator.RequestParameters;
+import org.apache.asterix.common.api.RequestReference;
 import org.apache.asterix.bad.BADJobService;
 import org.apache.asterix.bad.lang.BADCompilationProvider;
 import org.apache.asterix.bad.lang.BADLangExtension;
@@ -121,8 +123,10 @@
                             : PrecompiledType.CHANNEL);
             listener.suspend();
             activeEventHandler.registerListener(listener);
+            RequestReference requestReference =
+                    RequestReference.of(UUID.randomUUID().toString(), "CC", System.currentTimeMillis());
             BADJobService.redeployJobSpec(entityId, channel.getChannelBody(), metadataProvider, badStatementExecutor,
-                    hcc, new RequestParameters(null, null, null, null, null, null, null, true), true);
+                    hcc, new RequestParameters(requestReference, null, null, null, null, null, null, null, null, true), true);
 
             ScheduledExecutorService ses = BADJobService.startRepetitiveDeployedJobSpec(listener.getDeployedJobSpecId(),
                     hcc,
@@ -144,8 +148,10 @@
                     new DeployedJobSpecEventListener(appCtx, entityId, PrecompiledType.valueOf(procedure.getType()));
             listener.suspend();
             activeEventHandler.registerListener(listener);
+            RequestReference requestReference =
+                    RequestReference.of(UUID.randomUUID().toString(), "CC", System.currentTimeMillis());
             BADJobService.redeployJobSpec(entityId, procedure.getBody(), metadataProvider, badStatementExecutor, hcc,
-                    new RequestParameters(new ResultSet(hcc,
+                    new RequestParameters(requestReference, null, new ResultSet(hcc,
                             appCtx.getServiceContext().getControllerService().getNetworkSecurityManager()
                                     .getSocketChannelFactory(), appCtx.getCompilerProperties().getFrameSize(),
                             ResultReader.NUM_READERS),
