diff --git a/src/com/google/gct/testing/CloudTestConfigurationProviderImpl.java b/src/com/google/gct/testing/CloudTestConfigurationProviderImpl.java
index 3531388..434d493 100644
--- a/src/com/google/gct/testing/CloudTestConfigurationProviderImpl.java
+++ b/src/com/google/gct/testing/CloudTestConfigurationProviderImpl.java
@@ -293,7 +293,7 @@
           String testSpecification = GoogleCloudTestingUtils.prepareTestSpecification(testRunConfiguration);
 
           Map<String, TestExecution> testExecutions = CloudTestsLauncher
-            .triggerTestApi(cloudProjectId, moduleName, getBucketGcsPath(bucketName), getApkGcsPath(bucketName, appApkName),
+            .triggerTestApi(cloudProjectId, getBucketGcsPath(bucketName), getApkGcsPath(bucketName, appApkName),
                             getApkGcsPath(bucketName, testApkName), testSpecification, testRunConfiguration.INSTRUMENTATION_RUNNER_CLASS,
                             encodedMatrixInstances, appPackage, testPackage);
 
diff --git a/src/com/google/gct/testing/launcher/CloudTestsLauncher.java b/src/com/google/gct/testing/launcher/CloudTestsLauncher.java
index cfae4f6..26e5955 100644
--- a/src/com/google/gct/testing/launcher/CloudTestsLauncher.java
+++ b/src/com/google/gct/testing/launcher/CloudTestsLauncher.java
@@ -101,7 +101,7 @@
   }
 
   public static Map<String, TestExecution> triggerTestApi(
-    String cloudProjectId, String applicationName, String bucketGcsPath, String appApkGcsPath, String testApkGcsPath,
+    String cloudProjectId, String bucketGcsPath, String appApkGcsPath, String testApkGcsPath,
     String testSpecification, String instrumentationTestRunner, List<String> matrixInstances, String appPackage, String testPackage) {
 
     if (instrumentationTestRunner.isEmpty()) {
@@ -117,7 +117,7 @@
         .setTestApk(new FileReference().setGcsPath(testApkGcsPath)).setAppPackageId(appPackage).setTestPackageId(testPackage)
         .setTestRunnerClass(instrumentationTestRunner).setTestTargets(Lists.newArrayList(testSpecification))));
 
-    String historyId = getHistoryId(cloudProjectId, applicationName);
+    String historyId = getHistoryId(cloudProjectId, appPackage);
 
     for (String matrixInstance : matrixInstances) {
       TestExecution currentTestExecution = testExecution.clone();
