diff --git a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
--- a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
+++ b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
@@ -54,6 +54,7 @@
   private $heraldTranscript;
   private $subscribers;
   private $unmentionablePHIDMap = array();
+  private $transactionGroupID;
   private $applicationEmail;
 
   private $isPreview;
@@ -973,6 +974,14 @@
     return $this->cancelURI;
   }
 
+  protected function getTransactionGroupID() {
+    if ($this->transactionGroupID === null) {
+      $this->transactionGroupID = Filesystem::readRandomCharacters(32);
+    }
+
+    return $this->transactionGroupID;
+  }
+
   final public function applyTransactions(
     PhabricatorLiskDAO $object,
     array $xactions) {
@@ -1162,7 +1171,7 @@
         throw $ex;
       }
 
-      $group_id = Filesystem::readRandomCharacters(32);
+      $group_id = $this->getTransactionGroupID();
 
       foreach ($xactions as $xaction) {
         if ($was_locked) {
@@ -4663,6 +4672,7 @@
     }
 
     $editor->mustEncrypt = $this->mustEncrypt;
+    $editor->transactionGroupID = $this->getTransactionGroupID();
 
     return $editor;
   }