Repository: SFDO-Tooling/CumulusCI
Pull request #3404 (2022-10-19 21:43:28)

Fix unquoted csv writer
## Issues Closed
* Fixed an injection vulnerability related to unquoted csv writers.


Patch:
diff --git a/cumulusci/tasks/bulkdata/step.py b/cumulusci/tasks/bulkdata/step.py
index 0d3fda60a..1e05259d3 100644
--- a/cumulusci/tasks/bulkdata/step.py
+++ b/cumulusci/tasks/bulkdata/step.py
@@ -343,7 +343,7 @@ class BulkApiDmlOperation(BaseDmlOperation, BulkJobMixin):
             self.api_options.get("batch_size") or DEFAULT_BULK_BATCH_SIZE
         )
         self.csv_buff = io.StringIO(newline="")
-        self.csv_writer = csv.writer(self.csv_buff)
+        self.csv_writer = csv.writer(self.csv_buff, quoting=csv.QUOTE_ALL)
 
     def start(self):
         self.job_id = self.bulk.create_job(
diff --git a/cumulusci/tasks/bulkdata/update_data.py b/cumulusci/tasks/bulkdata/update_data.py
index d3265993e..3d429fa9f 100644
--- a/cumulusci/tasks/bulkdata/update_data.py
+++ b/cumulusci/tasks/bulkdata/update_data.py
@@ -166,7 +166,7 @@ class UpdateData(BaseSalesforceApiTask):
         with TemporaryDirectory() as t:
             csvfile = Path(t) / "input.csv"
             with csvfile.open("w") as f:
-                writer = csv.writer(f)
+                writer = csv.writer(f, quoting=csv.QUOTE_ALL)
                 snowfakery_fieldnames = ["Oid"] + fields[1:]
                 writer.writerow(snowfakery_fieldnames)
                 writer.writerows(qs.get_results())
diff --git a/cumulusci/tasks/datadictionary.py b/cumulusci/tasks/datadictionary.py
index f3a2ee6f1..daa390eca 100644
--- a/cumulusci/tasks/datadictionary.py
+++ b/cumulusci/tasks/datadictionary.py
@@ -597,7 +597,7 @@ class GenerateDataDictionary(BaseGithubTask):
 
     def _write_object_results(self, file_handle):
         """Write to the given handle an output CSV containing the data dictionary for sObjects."""
-        writer = csv.writer(file_handle)
+        writer = csv.writer(file_handle, quoting=csv.QUOTE_ALL)
 
         writer.writerow(
             [
@@ -645,7 +645,7 @@ class GenerateDataDictionary(BaseGithubTask):
 
     def _write_field_results(self, file_handle):
         """Write to the given handle an output CSV containing the data dictionary for fields."""
-        writer = csv.writer(file_handle)
+        writer = csv.writer(file_handle, quoting=csv.QUOTE_ALL)
 
         writer.writerow(
             [
diff --git a/cumulusci/tasks/push/pushfails.py b/cumulusci/tasks/push/pushfails.py
index 6c07619ca..0c5ce2358 100644
--- a/cumulusci/tasks/push/pushfails.py
+++ b/cumulusci/tasks/push/pushfails.py
@@ -106,7 +106,7 @@ class ReportPushFailures(BaseSalesforceApiTask):
         ignore_errors = self.options["ignore_errors"]
         file_name = self.options["result_file"]
         with open(file_name, "w", encoding="utf-8") as f:
-            w = csv.writer(f)
+            w = csv.writer(f, quoting=csv.QUOTE_ALL)
             w.writerow(self.headers)
             for result in job_records:
                 error = result["Error"]
diff --git a/cumulusci/tasks/robotframework/libdoc.py b/cumulusci/tasks/robotframework/libdoc.py
index c1643fc6d..cd9526664 100644
--- a/cumulusci/tasks/robotframework/libdoc.py
+++ b/cumulusci/tasks/robotframework/libdoc.py
@@ -134,7 +134,7 @@ class RobotLibDoc(BaseTask):
             if self.options["output"].endswith(".csv"):
                 data = self._convert_to_tuples(kwfiles)
                 with open(self.options["output"], "w", newline="") as f:
-                    csv_writer = csv.writer(f)
+                    csv_writer = csv.writer(f, quoting=csv.QUOTE_ALL)
                     csv_writer.writerows(data)
 
             else:


Test patch:
diff --git a/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_fields__bulk.yaml b/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_fields__bulk.yaml
index c7e3ff28a..05927d98d 100644
--- a/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_fields__bulk.yaml
+++ b/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_complex_fields__bulk.yaml
@@ -2,12 +2,12 @@ version: 1
 interactions:
     - &id001
       include_file: GET_sobjects_Global_describe.yaml
-    - &id012
+    - &id009
       include_file: GET_sobjects_Contact_describe.yaml
     - *id001
-    - &id013
+    - &id010
       include_file: GET_sobjects_Opportunity_describe.yaml
-    - &id014
+    - &id011
       request:
           method: GET
           uri: https://orgname.my.salesforce.com/services/data/vxx.0/limits/recordCount?sObjects=Contact
@@ -15,7 +15,7 @@ interactions:
           headers: &id002
               Request-Headers:
                   - Elided
-      response:
+      response: &id007
           status: &id003
               code: 200
               message: OK
@@ -24,20 +24,18 @@ interactions:
                   - application/json;charset=UTF-8
               Others: Elided
           body:
-              string:
-                  "{\n  \"sObjects\" : [ {\n    \"count\" : 2,\n    \"name\" : \"Contact\"\
-                  \n  } ]\n}"
-    - request: &id015
+              string: "{\n  \"sObjects\" : [ ]\n}"
+    - request: &id012
           method: GET
           uri: https://orgname.my.salesforce.com/services/data/vxx.0/query/?q=select+Id%2CFirstName%2CLastName+from+Contact
           body: null
           headers: *id002
-      response: &id011
+      response: &id008
           status: *id003
           headers: *id004
           body:
               string: "{\n  \"totalSize\" : 0,\n  \"done\" : true,\n  \"records\" : [ ]\n}"
-    - request: &id016
+    - request: &id013
           method: POST
           uri: https://orgname.my.salesforce.com/services/async/vxx.0/job
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><operation>upsert</operation><object>Contact</object><externalIdFieldName>Id</externalIdFieldName><concurrencyMode>Parallel</concurrencyMode><contentType>CSV</contentType></jobInfo>
@@ -54,26 +52,31 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRIAAY
+                      id: 750P0000006HoSQIA0
                       object: Contact
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:43:43.000Z"
-                      smts: "2022-04-23T02:43:43.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:32.000Z"
+                      smts: "2022-10-20T16:46:32.000Z"
                       numbatchtotal: "0"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRIAAY/batch
-          body:
-              "1d\r\nFirstName,LastName,Email,Id\r\n\r\n2c\r\nLindsay,Sitwell,lindsay.bluth@example.com,\r\
-              \n\r\n26\r\nAudrey,Cain,audrey.cain@example.com,\r\n\r\n2e\r\nMicheal,Bernard,michael.bernard@example.com,\r\
-              \n\r\n26\r\nChloe,Myers,Chloe.Myers@example.com,\r\n\r\n26\r\nRose,Larson,Rose.Larson@example.com,\r\
-              \n\r\n22\r\nBrent,Ali,Brent.Ali@example.com,\r\n\r\n2c\r\nJulia,Townsend,Julia.Townsend@example.com,\r\
-              \n\r\n36\r\nBenjamin,Cunningham,Benjamin.Cunningham@example.com,\r\n\r\n2e\r\
-              \nChristy,Stanton,Christy.Stanton@example.com,\r\n\r\n30\r\nSabrina,Roberson,Sabrina.Roberson@example.com,\r\
-              \n\r\n2a\r\nMichael,Bluth,Michael.Bluth@example.com,\r\n\r\n28\r\nJavier,Banks,Javier.Banks@example.com,\r\
-              \n\r\n22\r\nGOB,Bluth,GOB.Bluth@example.com,\r\n\r\n2a\r\nKaitlyn,Rubio,Kaitlyn.Rubio@example.com,\r\
-              \n\r\n26\r\nJerry,Eaton,Jerry.Eaton@example.com,\r\n\r\n30\r\nGabrielle,Vargas,Gabrielle.Vargas@example.com,\r\
-              \n\r\n0\r\n\r\n"
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSQIA0/batch
+          body:
+              "25\r\n\"FirstName\",\"LastName\",\"Email\",\"Id\"\r\n\r\n34\r\n\"Lindsay\"\
+              ,\"Sitwell\",\"lindsay.bluth@example.com\",\"\"\r\n\r\n2e\r\n\"Audrey\",\"Cain\"\
+              ,\"audrey.cain@example.com\",\"\"\r\n\r\n36\r\n\"Micheal\",\"Bernard\",\"michael.bernard@example.com\"\
+              ,\"\"\r\n\r\n2e\r\n\"Chloe\",\"Myers\",\"Chloe.Myers@example.com\",\"\"\r\n\r\
+              \n2e\r\n\"Rose\",\"Larson\",\"Rose.Larson@example.com\",\"\"\r\n\r\n2a\r\n\"\
+              Brent\",\"Ali\",\"Brent.Ali@example.com\",\"\"\r\n\r\n34\r\n\"Julia\",\"Townsend\"\
+              ,\"Julia.Townsend@example.com\",\"\"\r\n\r\n3e\r\n\"Benjamin\",\"Cunningham\"\
+              ,\"Benjamin.Cunningham@example.com\",\"\"\r\n\r\n36\r\n\"Christy\",\"Stanton\"\
+              ,\"Christy.Stanton@example.com\",\"\"\r\n\r\n38\r\n\"Sabrina\",\"Roberson\"\
+              ,\"Sabrina.Roberson@example.com\",\"\"\r\n\r\n32\r\n\"Michael\",\"Bluth\",\"\
+              Michael.Bluth@example.com\",\"\"\r\n\r\n30\r\n\"Javier\",\"Banks\",\"Javier.Banks@example.com\"\
+              ,\"\"\r\n\r\n2a\r\n\"GOB\",\"Bluth\",\"GOB.Bluth@example.com\",\"\"\r\n\r\n\
+              32\r\n\"Kaitlyn\",\"Rubio\",\"Kaitlyn.Rubio@example.com\",\"\"\r\n\r\n2e\r\n\
+              \"Jerry\",\"Eaton\",\"Jerry.Eaton@example.com\",\"\"\r\n\r\n38\r\n\"Gabrielle\"\
+              ,\"Vargas\",\"Gabrielle.Vargas@example.com\",\"\"\r\n\r\n0\r\n\r\n"
           headers: *id002
       response:
           status: *id005
@@ -82,14 +85,14 @@ interactions:
               string:
                   include_template: batchInfo_xml.tpl
                   vars:
-                      id: 751550000078RinAAE
-                      jobId: 75055000007qrRIAAY
+                      id: 751P0000007qkh8IAA
+                      jobId: 750P0000006HoSQIA0
                       state: Queued
-                      cdate: "2022-04-23T02:43:44.000Z"
-                      smts: "2022-04-23T02:43:44.000Z"
+                      cdate: "2022-10-20T16:46:33.000Z"
+                      smts: "2022-10-20T16:46:33.000Z"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRIAAY
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSQIA0
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><state>Closed</state></jobInfo>
           headers: *id002
       response:
@@ -99,17 +102,19 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRIAAY
+                      id: 750P0000006HoSQIA0
                       object: Contact
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:43:43.000Z"
-                      smts: "2022-04-23T02:43:43.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:32.000Z"
+                      smts: "2022-10-20T16:46:32.000Z"
                       state: Closed
-                      qdbatches: "1"
-    - &id007
-      request: &id009
+                      numbatchcomp: "1"
+                      numrecsprocc: "16"
+                      tpt: "529"
+                      apipt: "378"
+    - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRIAAY
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSQIA0
           body: null
           headers: *id002
       response:
@@ -119,17 +124,19 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRIAAY
+                      id: 750P0000006HoSQIA0
                       object: Contact
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:43:43.000Z"
-                      smts: "2022-04-23T02:43:44.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:32.000Z"
+                      smts: "2022-10-20T16:46:34.000Z"
                       state: Closed
-                      qdbatches: "1"
-    - &id008
-      request: &id010
+                      numbatchcomp: "1"
+                      numrecsprocc: "16"
+                      tpt: "529"
+                      apipt: "378"
+    - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRIAAY/batch
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSQIA0/batch
           body: null
           headers: *id002
       response:
@@ -139,121 +146,76 @@ interactions:
               string:
                   include_template: batchInfoList_xml.tpl
                   vars:
-                      id: 751550000078RinAAE
-                      jobId: 75055000007qrRIAAY
-                      state: Queued
-                      cdate: "2022-04-23T02:43:44.000Z"
-                      smts: "2022-04-23T02:43:44.000Z"
-    - *id007
-    - *id008
-    - *id007
-    - *id008
-    - *id007
-    - *id008
-    - *id007
-    - *id008
-    - *id007
-    - *id008
-    - request: *id009
-      response:
-          status: *id003
-          headers: *id006
-          body:
-              string:
-                  include_template: jobInfo_upsert_xml.tpl
-                  vars:
-                      id: 75055000007qrRIAAY
-                      object: Contact
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:43:43.000Z"
-                      smts: "2022-04-23T02:43:44.000Z"
-                      state: Closed
-                      numbatchcomp: "1"
-                      numrecsprocc: "16"
-                      tpt: "573"
-                      apipt: "456"
-    - request: *id010
-      response:
-          status: *id003
-          headers: *id006
-          body:
-              string:
-                  include_template: batchInfoList_xml.tpl
-                  vars:
-                      id: 751550000078RinAAE
-                      jobId: 75055000007qrRIAAY
+                      id: 751P0000007qkh8IAA
+                      jobId: 750P0000006HoSQIA0
                       state: Completed
-                      cdate: "2022-04-23T02:43:44.000Z"
-                      smts: "2022-04-23T02:43:52.000Z"
+                      cdate: "2022-10-20T16:46:33.000Z"
+                      smts: "2022-10-20T16:46:34.000Z"
                       numrecsprocc: "16"
-                      tpt: "573"
-                      apipt: "456"
+                      tpt: "529"
+                      apipt: "378"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRIAAY/batch/751550000078RinAAE/result
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSQIA0/batch/751P0000007qkh8IAA/result
           body: null
           headers: *id002
       response:
           status: *id003
-          headers: &id021
+          headers: &id014
               Content-Type:
                   - text/csv
               Others: Elided
           body:
               string: '"Id","Success","Created","Error"
 
-                  "0035500001H9dAvAAJ","true","true",""
+                  "003P000001avB5GIAU","true","true",""
 
-                  "0035500001H9dAwAAJ","true","true",""
+                  "003P000001avB5HIAU","true","true",""
 
-                  "0035500001H9dAxAAJ","true","true",""
+                  "003P000001avB5IIAU","true","true",""
 
-                  "0035500001H9dAyAAJ","true","true",""
+                  "003P000001avB5JIAU","true","true",""
 
-                  "0035500001H9dAzAAJ","true","true",""
+                  "003P000001avB5KIAU","true","true",""
 
-                  "0035500001H9dB0AAJ","true","true",""
+                  "003P000001avB5LIAU","true","true",""
 
-                  "0035500001H9dB1AAJ","true","true",""
+                  "003P000001avB5MIAU","true","true",""
 
-                  "0035500001H9dB2AAJ","true","true",""
+                  "003P000001avB5NIAU","true","true",""
 
-                  "0035500001H9dB3AAJ","true","true",""
+                  "003P000001avB5OIAU","true","true",""
 
-                  "0035500001H9dB4AAJ","true","true",""
+                  "003P000001avB5PIAU","true","true",""
 
-                  "0035500001H9dB5AAJ","true","true",""
+                  "003P000001avB5QIAU","true","true",""
 
-                  "0035500001H9dB6AAJ","true","true",""
+                  "003P000001avB5RIAU","true","true",""
 
-                  "0035500001H9dB7AAJ","true","true",""
+                  "003P000001avB5SIAU","true","true",""
 
-                  "0035500001H9dB8AAJ","true","true",""
+                  "003P000001avB5TIAU","true","true",""
 
-                  "0035500001H9dB9AAJ","true","true",""
+                  "003P000001avB5UIAU","true","true",""
 
-                  "0035500001H9dBAAAZ","true","true",""
+                  "003P000001avB5VIAU","true","true",""
 
                   '
-    - &id022
+    - &id015
       request:
           method: GET
           uri: https://orgname.my.salesforce.com/services/data/vxx.0/limits/recordCount?sObjects=Opportunity
           body: null
           headers: *id002
-      response:
-          status: *id003
-          headers: *id004
-          body:
-              string: "{\n  \"sObjects\" : [ ]\n}"
-    - &id023
+      response: *id007
+    - &id016
       request:
           method: GET
           uri: https://orgname.my.salesforce.com/services/data/vxx.0/query/?q=select+Id%2CName+from+Opportunity
           body: null
           headers: *id002
-      response: *id011
-    - request: &id024
+      response: *id008
+    - request: &id017
           method: POST
           uri: https://orgname.my.salesforce.com/services/async/vxx.0/job
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><operation>upsert</operation><object>Opportunity</object><externalIdFieldName>Id</externalIdFieldName><concurrencyMode>Parallel</concurrencyMode><contentType>CSV</contentType></jobInfo>
@@ -265,15 +227,15 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRNAAY
+                      id: 750P0000006HoSVIA0
                       object: Opportunity
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:43:54.000Z"
-                      smts: "2022-04-23T02:43:54.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:37.000Z"
+                      smts: "2022-10-20T16:46:37.000Z"
                       numbatchtotal: "0"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRNAAY
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSVIA0
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><state>Closed</state></jobInfo>
           headers: *id002
       response:
@@ -283,16 +245,16 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRNAAY
+                      id: 750P0000006HoSVIA0
                       object: Opportunity
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:43:54.000Z"
-                      smts: "2022-04-23T02:43:54.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:37.000Z"
+                      smts: "2022-10-20T16:46:37.000Z"
                       state: Closed
                       numbatchtotal: "0"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRNAAY
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSVIA0
           body: null
           headers: *id002
       response:
@@ -302,16 +264,16 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRNAAY
+                      id: 750P0000006HoSVIA0
                       object: Opportunity
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:43:54.000Z"
-                      smts: "2022-04-23T02:43:55.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:37.000Z"
+                      smts: "2022-10-20T16:46:38.000Z"
                       state: Closed
                       numbatchtotal: "0"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRNAAY/batch
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSVIA0/batch
           body: null
           headers: *id002
       response:
@@ -321,7 +283,7 @@ interactions:
               string:
                   "<?xml version=\"1.0\" encoding=\"UTF-8\"?><batchInfoList\n   xmlns=\"\
                   http://www.force.com/2009/06/asyncapi/dataload\" />"
-    - request: &id029
+    - request: &id018
           method: GET
           uri: https://orgname.my.salesforce.com/services/data/vxx.0/query/?q=select+Email+from+Contact
           body: null
@@ -333,44 +295,44 @@ interactions:
               string:
                   "{\n  \"totalSize\" : 16,\n  \"done\" : true,\n  \"records\" : [ {\n\
                   \    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"\
-                  /services/data/vxx.0/sobjects/Contact/0035500001H9dAvAAJ\"\n    },\n    \"\
+                  /services/data/vxx.0/sobjects/Contact/003P000001avB5GIAU\"\n    },\n    \"\
                   Email\" : \"lindsay.bluth@example.com\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAwAAJ\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5HIAU\"\
                   \n    },\n    \"Email\" : \"audrey.cain@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAxAAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5IIAU\"\
                   \n    },\n    \"Email\" : \"michael.bernard@example.com\"\n  }, {\n    \"\
-                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAyAAJ\"\
+                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5JIAU\"\
                   \n    },\n    \"Email\" : \"chloe.myers@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAzAAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5KIAU\"\
                   \n    },\n    \"Email\" : \"rose.larson@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB0AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5LIAU\"\
                   \n    },\n    \"Email\" : \"brent.ali@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB1AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5MIAU\"\
                   \n    },\n    \"Email\" : \"julia.townsend@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB2AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5NIAU\"\
                   \n    },\n    \"Email\" : \"benjamin.cunningham@example.com\"\n  }, {\n  \
-                  \  \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB3AAJ\"\
+                  \  \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5OIAU\"\
                   \n    },\n    \"Email\" : \"christy.stanton@example.com\"\n  }, {\n    \"\
-                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB4AAJ\"\
+                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5PIAU\"\
                   \n    },\n    \"Email\" : \"sabrina.roberson@example.com\"\n  }, {\n    \"\
-                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB5AAJ\"\
+                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5QIAU\"\
                   \n    },\n    \"Email\" : \"michael.bluth@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB6AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5RIAU\"\
                   \n    },\n    \"Email\" : \"javier.banks@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB7AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5SIAU\"\
                   \n    },\n    \"Email\" : \"gob.bluth@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB8AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5TIAU\"\
                   \n    },\n    \"Email\" : \"kaitlyn.rubio@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB9AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5UIAU\"\
                   \n    },\n    \"Email\" : \"jerry.eaton@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dBAAAZ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5VIAU\"\
                   \n    },\n    \"Email\" : \"gabrielle.vargas@example.com\"\n  } ]\n}"
     - *id001
-    - *id012
+    - *id009
     - *id001
-    - *id013
-    - *id014
-    - request: *id015
+    - *id010
+    - *id011
+    - request: *id012
       response:
           status: *id003
           headers: *id004
@@ -378,55 +340,55 @@ interactions:
               string:
                   "{\n  \"totalSize\" : 16,\n  \"done\" : true,\n  \"records\" : [ {\n\
                   \    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"\
-                  /services/data/vxx.0/sobjects/Contact/0035500001H9dAvAAJ\"\n    },\n    \"\
-                  Id\" : \"0035500001H9dAvAAJ\",\n    \"FirstName\" : \"Lindsay\",\n    \"LastName\"\
+                  /services/data/vxx.0/sobjects/Contact/003P000001avB5GIAU\"\n    },\n    \"\
+                  Id\" : \"003P000001avB5GIAU\",\n    \"FirstName\" : \"Lindsay\",\n    \"LastName\"\
                   \ : \"Sitwell\"\n  }, {\n    \"attributes\" : {\n      \"type\" : \"Contact\"\
-                  ,\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAwAAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dAwAAJ\",\n    \"FirstName\" : \"Audrey\"\
+                  ,\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5HIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5HIAU\",\n    \"FirstName\" : \"Audrey\"\
                   ,\n    \"LastName\" : \"Cain\"\n  }, {\n    \"attributes\" : {\n      \"type\"\
-                  \ : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAxAAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dAxAAJ\",\n    \"FirstName\" : \"Micheal\"\
+                  \ : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5IIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5IIAU\",\n    \"FirstName\" : \"Micheal\"\
                   ,\n    \"LastName\" : \"Bernard\"\n  }, {\n    \"attributes\" : {\n      \"\
-                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAyAAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dAyAAJ\",\n    \"FirstName\" : \"Chloe\"\
+                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5JIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5JIAU\",\n    \"FirstName\" : \"Chloe\"\
                   ,\n    \"LastName\" : \"Myers\"\n  }, {\n    \"attributes\" : {\n      \"\
-                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAzAAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dAzAAJ\",\n    \"FirstName\" : \"Rose\"\
+                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5KIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5KIAU\",\n    \"FirstName\" : \"Rose\"\
                   ,\n    \"LastName\" : \"Larson\"\n  }, {\n    \"attributes\" : {\n      \"\
-                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB0AAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dB0AAJ\",\n    \"FirstName\" : \"Brent\"\
+                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5LIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5LIAU\",\n    \"FirstName\" : \"Brent\"\
                   ,\n    \"LastName\" : \"Ali\"\n  }, {\n    \"attributes\" : {\n      \"type\"\
-                  \ : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB1AAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dB1AAJ\",\n    \"FirstName\" : \"Julia\"\
+                  \ : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5MIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5MIAU\",\n    \"FirstName\" : \"Julia\"\
                   ,\n    \"LastName\" : \"Townsend\"\n  }, {\n    \"attributes\" : {\n     \
-                  \ \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB2AAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dB2AAJ\",\n    \"FirstName\" : \"Benjamin\"\
+                  \ \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5NIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5NIAU\",\n    \"FirstName\" : \"Benjamin\"\
                   ,\n    \"LastName\" : \"Cunningham\"\n  }, {\n    \"attributes\" : {\n   \
-                  \   \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB3AAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dB3AAJ\",\n    \"FirstName\" : \"Christy\"\
+                  \   \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5OIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5OIAU\",\n    \"FirstName\" : \"Christy\"\
                   ,\n    \"LastName\" : \"Stanton\"\n  }, {\n    \"attributes\" : {\n      \"\
-                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB4AAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dB4AAJ\",\n    \"FirstName\" : \"Sabrina\"\
+                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5PIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5PIAU\",\n    \"FirstName\" : \"Sabrina\"\
                   ,\n    \"LastName\" : \"Roberson\"\n  }, {\n    \"attributes\" : {\n     \
-                  \ \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB5AAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dB5AAJ\",\n    \"FirstName\" : \"Michael\"\
+                  \ \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5QIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5QIAU\",\n    \"FirstName\" : \"Michael\"\
                   ,\n    \"LastName\" : \"Bluth\"\n  }, {\n    \"attributes\" : {\n      \"\
-                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB6AAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dB6AAJ\",\n    \"FirstName\" : \"Javier\"\
+                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5RIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5RIAU\",\n    \"FirstName\" : \"Javier\"\
                   ,\n    \"LastName\" : \"Banks\"\n  }, {\n    \"attributes\" : {\n      \"\
-                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB7AAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dB7AAJ\",\n    \"FirstName\" : \"GOB\"\
+                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5SIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5SIAU\",\n    \"FirstName\" : \"GOB\"\
                   ,\n    \"LastName\" : \"Bluth\"\n  }, {\n    \"attributes\" : {\n      \"\
-                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB8AAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dB8AAJ\",\n    \"FirstName\" : \"Kaitlyn\"\
+                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5TIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5TIAU\",\n    \"FirstName\" : \"Kaitlyn\"\
                   ,\n    \"LastName\" : \"Rubio\"\n  }, {\n    \"attributes\" : {\n      \"\
-                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB9AAJ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dB9AAJ\",\n    \"FirstName\" : \"Jerry\"\
+                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5UIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5UIAU\",\n    \"FirstName\" : \"Jerry\"\
                   ,\n    \"LastName\" : \"Eaton\"\n  }, {\n    \"attributes\" : {\n      \"\
-                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dBAAAZ\"\
-                  \n    },\n    \"Id\" : \"0035500001H9dBAAAZ\",\n    \"FirstName\" : \"Gabrielle\"\
+                  type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5VIAU\"\
+                  \n    },\n    \"Id\" : \"003P000001avB5VIAU\",\n    \"FirstName\" : \"Gabrielle\"\
                   ,\n    \"LastName\" : \"Vargas\"\n  } ]\n}"
-    - request: *id016
+    - request: *id013
       response:
           status: *id005
           headers: *id006
@@ -434,20 +396,22 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRSAAY
+                      id: 750P0000006HoSaIAK
                       object: Contact
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:44:00.000Z"
-                      smts: "2022-04-23T02:44:00.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:44.000Z"
+                      smts: "2022-10-20T16:46:44.000Z"
                       numbatchtotal: "0"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRSAAY/batch
-          body:
-              "1d\r\nFirstName,LastName,Email,Id\r\n\r\n3c\r\nMichael,Bluth,Nichael.Bluth@example.com,0035500001H9dB5AAJ\r\
-              \n\r\n3c\r\nGOB,Bluth,GeorgeOscar.Bluth@example.com,0035500001H9dB7AAJ\r\n\r\
-              \n2a\r\nLindsay,Bluth,lindsay.bluth@example.com,\r\n\r\n2a\r\nAnnyong,Bluth,annyong.bluth@example.com,\r\
-              \n\r\n0\r\n\r\n"
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSaIAK/batch
+          body:
+              "25\r\n\"FirstName\",\"LastName\",\"Email\",\"Id\"\r\n\r\n44\r\n\"Michael\"\
+              ,\"Bluth\",\"Nichael.Bluth@example.com\",\"003P000001avB5QIAU\"\r\n\r\n44\r\n\
+              \"GOB\",\"Bluth\",\"GeorgeOscar.Bluth@example.com\",\"003P000001avB5SIAU\"\r\
+              \n\r\n32\r\n\"Lindsay\",\"Bluth\",\"lindsay.bluth@example.com\",\"\"\r\n\r\n\
+              32\r\n\"Annyong\",\"Bluth\",\"annyong.bluth@example.com\",\"\"\r\n\r\n0\r\n\r\
+              \n"
           headers: *id002
       response:
           status: *id005
@@ -456,14 +420,14 @@ interactions:
               string:
                   include_template: batchInfo_xml.tpl
                   vars:
-                      id: 751550000078RisAAE
-                      jobId: 75055000007qrRSAAY
+                      id: 751P0000007qkhDIAQ
+                      jobId: 750P0000006HoSaIAK
                       state: Queued
-                      cdate: "2022-04-23T02:44:02.000Z"
-                      smts: "2022-04-23T02:44:02.000Z"
+                      cdate: "2022-10-20T16:46:45.000Z"
+                      smts: "2022-10-20T16:46:45.000Z"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRSAAY
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSaIAK
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><state>Closed</state></jobInfo>
           headers: *id002
       response:
@@ -473,17 +437,19 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRSAAY
+                      id: 750P0000006HoSaIAK
                       object: Contact
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:44:00.000Z"
-                      smts: "2022-04-23T02:44:00.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:44.000Z"
+                      smts: "2022-10-20T16:46:44.000Z"
                       state: Closed
-                      qdbatches: "1"
-    - &id017
-      request: &id019
+                      numbatchcomp: "1"
+                      numrecsprocc: "4"
+                      tpt: "356"
+                      apipt: "206"
+    - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRSAAY
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSaIAK
           body: null
           headers: *id002
       response:
@@ -493,17 +459,19 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRSAAY
+                      id: 750P0000006HoSaIAK
                       object: Contact
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:44:00.000Z"
-                      smts: "2022-04-23T02:44:03.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:44.000Z"
+                      smts: "2022-10-20T16:46:45.000Z"
                       state: Closed
-                      qdbatches: "1"
-    - &id018
-      request: &id020
+                      numbatchcomp: "1"
+                      numrecsprocc: "4"
+                      tpt: "356"
+                      apipt: "206"
+    - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRSAAY/batch
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSaIAK/batch
           body: null
           headers: *id002
       response:
@@ -513,100 +481,37 @@ interactions:
               string:
                   include_template: batchInfoList_xml.tpl
                   vars:
-                      id: 751550000078RisAAE
-                      jobId: 75055000007qrRSAAY
-                      state: Queued
-                      cdate: "2022-04-23T02:44:02.000Z"
-                      smts: "2022-04-23T02:44:02.000Z"
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - *id017
-    - *id018
-    - request: *id019
-      response:
-          status: *id003
-          headers: *id006
-          body:
-              string:
-                  include_template: jobInfo_upsert_xml.tpl
-                  vars:
-                      id: 75055000007qrRSAAY
-                      object: Contact
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:44:00.000Z"
-                      smts: "2022-04-23T02:44:03.000Z"
-                      state: Closed
-                      numbatchip: "1"
-                      numrecsprocc: "4"
-                      tpt: "484"
-                      apipt: "349"
-    - request: *id020
-      response:
-          status: *id003
-          headers: *id006
-          body:
-              string:
-                  include_template: batchInfoList_xml.tpl
-                  vars:
-                      id: 751550000078RisAAE
-                      jobId: 75055000007qrRSAAY
+                      id: 751P0000007qkhDIAQ
+                      jobId: 750P0000006HoSaIAK
                       state: Completed
-                      cdate: "2022-04-23T02:44:02.000Z"
-                      smts: "2022-04-23T02:44:23.000Z"
+                      cdate: "2022-10-20T16:46:45.000Z"
+                      smts: "2022-10-20T16:46:45.000Z"
                       numrecsprocc: "4"
-                      tpt: "484"
-                      apipt: "349"
+                      tpt: "356"
+                      apipt: "206"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRSAAY/batch/751550000078RisAAE/result
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSaIAK/batch/751P0000007qkhDIAQ/result
           body: null
           headers: *id002
       response:
           status: *id003
-          headers: *id021
+          headers: *id014
           body:
               string: '"Id","Success","Created","Error"
 
-                  "0035500001H9dB5AAJ","true","false",""
+                  "003P000001avB5QIAU","true","false",""
 
-                  "0035500001H9dB7AAJ","true","false",""
+                  "003P000001avB5SIAU","true","false",""
 
-                  "0035500001H9dBGAAZ","true","true",""
+                  "003P000001avB5WIAU","true","true",""
 
-                  "0035500001H9dBHAAZ","true","true",""
+                  "003P000001avB5XIAU","true","true",""
 
                   '
-    - *id022
-    - *id023
-    - request: *id024
+    - *id015
+    - *id016
+    - request: *id017
       response:
           status: *id005
           headers: *id006
@@ -614,19 +519,19 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRXAAY
+                      id: 750P0000006HoSfIAK
                       object: Opportunity
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:44:25.000Z"
-                      smts: "2022-04-23T02:44:25.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:49.000Z"
+                      smts: "2022-10-20T16:46:49.000Z"
                       numbatchtotal: "0"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRXAAY/batch
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSfIAK/batch
           body:
-              "1d\r\nName,CloseDate,StageName,Id\r\n\r\n30\r\nIllusional Opportunity,2021-10-03,In\
-              \ Progress,\r\n\r\n2f\r\nEspionage Opportunity,2021-10-03,In Progress,\r\n\r\
-              \n0\r\n\r\n"
+              "25\r\n\"Name\",\"CloseDate\",\"StageName\",\"Id\"\r\n\r\n38\r\n\"Illusional\
+              \ Opportunity\",\"2021-10-03\",\"In Progress\",\"\"\r\n\r\n37\r\n\"Espionage\
+              \ Opportunity\",\"2021-10-03\",\"In Progress\",\"\"\r\n\r\n0\r\n\r\n"
           headers: *id002
       response:
           status: *id005
@@ -635,14 +540,14 @@ interactions:
               string:
                   include_template: batchInfo_xml.tpl
                   vars:
-                      id: 751550000078RixAAE
-                      jobId: 75055000007qrRXAAY
+                      id: 751P0000007qkbBIAQ
+                      jobId: 750P0000006HoSfIAK
                       state: Queued
-                      cdate: "2022-04-23T02:44:26.000Z"
-                      smts: "2022-04-23T02:44:26.000Z"
+                      cdate: "2022-10-20T16:46:50.000Z"
+                      smts: "2022-10-20T16:46:50.000Z"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRXAAY
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSfIAK
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><state>Closed</state></jobInfo>
           headers: *id002
       response:
@@ -652,17 +557,19 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRXAAY
+                      id: 750P0000006HoSfIAK
                       object: Opportunity
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:44:25.000Z"
-                      smts: "2022-04-23T02:44:25.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:49.000Z"
+                      smts: "2022-10-20T16:46:49.000Z"
                       state: Closed
-                      qdbatches: "1"
-    - &id025
-      request: &id027
+                      numbatchcomp: "1"
+                      numrecsprocc: "2"
+                      tpt: "242"
+                      apipt: "130"
+    - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRXAAY
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSfIAK
           body: null
           headers: *id002
       response:
@@ -672,17 +579,19 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75055000007qrRXAAY
+                      id: 750P0000006HoSfIAK
                       object: Opportunity
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:44:25.000Z"
-                      smts: "2022-04-23T02:44:27.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:49.000Z"
+                      smts: "2022-10-20T16:46:50.000Z"
                       state: Closed
-                      qdbatches: "1"
-    - &id026
-      request: &id028
+                      numbatchcomp: "1"
+                      numrecsprocc: "2"
+                      tpt: "242"
+                      apipt: "130"
+    - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRXAAY/batch
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSfIAK/batch
           body: null
           headers: *id002
       response:
@@ -692,70 +601,31 @@ interactions:
               string:
                   include_template: batchInfoList_xml.tpl
                   vars:
-                      id: 751550000078RixAAE
-                      jobId: 75055000007qrRXAAY
-                      state: Queued
-                      cdate: "2022-04-23T02:44:26.000Z"
-                      smts: "2022-04-23T02:44:26.000Z"
-    - *id025
-    - *id026
-    - *id025
-    - *id026
-    - *id025
-    - *id026
-    - *id025
-    - *id026
-    - request: *id027
-      response:
-          status: *id003
-          headers: *id006
-          body:
-              string:
-                  include_template: jobInfo_upsert_xml.tpl
-                  vars:
-                      id: 75055000007qrRXAAY
-                      object: Opportunity
-                      creator: 0055500000AZDHyAAP
-                      cdate: "2022-04-23T02:44:25.000Z"
-                      smts: "2022-04-23T02:44:27.000Z"
-                      state: Closed
-                      numbatchcomp: "1"
-                      numrecsprocc: "2"
-                      tpt: "280"
-                      apipt: "154"
-    - request: *id028
-      response:
-          status: *id003
-          headers: *id006
-          body:
-              string:
-                  include_template: batchInfoList_xml.tpl
-                  vars:
-                      id: 751550000078RixAAE
-                      jobId: 75055000007qrRXAAY
+                      id: 751P0000007qkbBIAQ
+                      jobId: 750P0000006HoSfIAK
                       state: Completed
-                      cdate: "2022-04-23T02:44:26.000Z"
-                      smts: "2022-04-23T02:44:33.000Z"
+                      cdate: "2022-10-20T16:46:50.000Z"
+                      smts: "2022-10-20T16:46:50.000Z"
                       numrecsprocc: "2"
-                      tpt: "280"
-                      apipt: "154"
+                      tpt: "242"
+                      apipt: "130"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75055000007qrRXAAY/batch/751550000078RixAAE/result
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSfIAK/batch/751P0000007qkbBIAQ/result
           body: null
           headers: *id002
       response:
           status: *id003
-          headers: *id021
+          headers: *id014
           body:
               string: '"Id","Success","Created","Error"
 
-                  "0065500000KPywUAAT","true","true",""
+                  "006P000000FNGuLIAX","true","true",""
 
-                  "0065500000KPywVAAT","true","true",""
+                  "006P000000FNGuMIAX","true","true",""
 
                   '
-    - request: *id029
+    - request: *id018
       response:
           status: *id003
           headers: *id004
@@ -763,39 +633,39 @@ interactions:
               string:
                   "{\n  \"totalSize\" : 18,\n  \"done\" : true,\n  \"records\" : [ {\n\
                   \    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"\
-                  /services/data/vxx.0/sobjects/Contact/0035500001H9dAvAAJ\"\n    },\n    \"\
+                  /services/data/vxx.0/sobjects/Contact/003P000001avB5GIAU\"\n    },\n    \"\
                   Email\" : \"lindsay.bluth@example.com\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAwAAJ\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5HIAU\"\
                   \n    },\n    \"Email\" : \"audrey.cain@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAxAAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5IIAU\"\
                   \n    },\n    \"Email\" : \"michael.bernard@example.com\"\n  }, {\n    \"\
-                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAyAAJ\"\
+                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5JIAU\"\
                   \n    },\n    \"Email\" : \"chloe.myers@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dAzAAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5KIAU\"\
                   \n    },\n    \"Email\" : \"rose.larson@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB0AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5LIAU\"\
                   \n    },\n    \"Email\" : \"brent.ali@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB1AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5MIAU\"\
                   \n    },\n    \"Email\" : \"julia.townsend@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB2AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5NIAU\"\
                   \n    },\n    \"Email\" : \"benjamin.cunningham@example.com\"\n  }, {\n  \
-                  \  \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB3AAJ\"\
+                  \  \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5OIAU\"\
                   \n    },\n    \"Email\" : \"christy.stanton@example.com\"\n  }, {\n    \"\
-                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB4AAJ\"\
+                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5PIAU\"\
                   \n    },\n    \"Email\" : \"sabrina.roberson@example.com\"\n  }, {\n    \"\
-                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB5AAJ\"\
+                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5QIAU\"\
                   \n    },\n    \"Email\" : \"nichael.bluth@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB6AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5RIAU\"\
                   \n    },\n    \"Email\" : \"javier.banks@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB7AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5SIAU\"\
                   \n    },\n    \"Email\" : \"georgeoscar.bluth@example.com\"\n  }, {\n    \"\
-                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB8AAJ\"\
+                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5TIAU\"\
                   \n    },\n    \"Email\" : \"kaitlyn.rubio@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dB9AAJ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5UIAU\"\
                   \n    },\n    \"Email\" : \"jerry.eaton@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dBAAAZ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5VIAU\"\
                   \n    },\n    \"Email\" : \"gabrielle.vargas@example.com\"\n  }, {\n    \"\
-                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dBGAAZ\"\
+                  attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5WIAU\"\
                   \n    },\n    \"Email\" : \"lindsay.bluth@example.com\"\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0035500001H9dBHAAZ\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB5XIAU\"\
                   \n    },\n    \"Email\" : \"annyong.bluth@example.com\"\n  } ]\n}"
diff --git a/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_external_id_field.yaml b/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_external_id_field.yaml
index 7280b3a7a..1205a9974 100644
--- a/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_external_id_field.yaml
+++ b/cumulusci/tasks/bulkdata/tests/cassettes/TestUpsert.test_upsert_external_id_field.yaml
@@ -2,15 +2,15 @@ version: 1
 interactions:
     - &id001
       include_file: GET_sobjects_Global_describe.yaml
-    - &id010
+    - &id011
       include_file: GET_sobjects_Account_describe.yaml
     - *id001
-    - &id011
+    - &id012
       include_file: GET_sobjects_Contact_describe.yaml
     - *id001
-    - &id012
+    - &id013
       include_file: GET_sobjects_Opportunity_describe.yaml
-    - request: &id013
+    - request: &id014
           method: POST
           uri: https://orgname.my.salesforce.com/services/async/vxx.0/job
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><operation>insert</operation><object>Account</object><concurrencyMode>Parallel</concurrencyMode><contentType>CSV</contentType></jobInfo>
@@ -29,16 +29,16 @@ interactions:
               string:
                   include_template: jobInfo_insert_xml.tpl
                   vars:
-                      id: 75023000003RtOYAA0
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:15.000Z"
-                      smts: "2022-03-30T16:12:15.000Z"
+                      id: 750P0000006HoS1IAK
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:36.000Z"
+                      smts: "2022-10-20T16:45:36.000Z"
                       qdbatches: "0"
                       numbatchtotal: "0"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOYAA0/batch
-          body: "6\r\nName\r\n\r\nf\r\nSitwell-Bluth\r\n\r\n0\r\n\r\n"
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoS1IAK/batch
+          body: "8\r\n\"Name\"\r\n\r\n11\r\n\"Sitwell-Bluth\"\r\n\r\n0\r\n\r\n"
           headers: *id002
       response:
           status: *id003
@@ -47,14 +47,14 @@ interactions:
               string:
                   include_template: batchInfo_xml.tpl
                   vars:
-                      id: 75123000004BtWZAA0
-                      jobId: 75023000003RtOYAA0
+                      id: 751P0000007qkgoIAA
+                      jobId: 750P0000006HoS1IAK
                       state: Queued
-                      cdate: "2022-03-30T16:12:16.000Z"
-                      smts: "2022-03-30T16:12:16.000Z"
+                      cdate: "2022-10-20T16:45:37.000Z"
+                      smts: "2022-10-20T16:45:37.000Z"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOYAA0
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoS1IAK
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><state>Closed</state></jobInfo>
           headers: *id002
       response:
@@ -66,15 +66,16 @@ interactions:
               string:
                   include_template: jobInfo_insert_xml.tpl
                   vars:
-                      id: 75023000003RtOYAA0
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:15.000Z"
-                      smts: "2022-03-30T16:12:15.000Z"
+                      id: 750P0000006HoS1IAK
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:36.000Z"
+                      smts: "2022-10-20T16:45:36.000Z"
                       state: Closed
-                      qdbatches: "1"
+                      qdbatches: "0"
+                      numbatchip: "1"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOYAA0
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoS1IAK
           body: null
           headers: *id002
       response:
@@ -84,16 +85,19 @@ interactions:
               string:
                   include_template: jobInfo_insert_xml.tpl
                   vars:
-                      id: 75023000003RtOYAA0
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:15.000Z"
-                      smts: "2022-03-30T16:12:17.000Z"
+                      id: 750P0000006HoS1IAK
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:36.000Z"
+                      smts: "2022-10-20T16:45:38.000Z"
                       state: Closed
                       qdbatches: "0"
-                      numbatchip: "1"
+                      numbatchcomp: "1"
+                      numrecsprocc: "1"
+                      tpt: "273"
+                      apipt: "128"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOYAA0/batch
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoS1IAK/batch
           body: null
           headers: *id002
       response:
@@ -103,17 +107,17 @@ interactions:
               string:
                   include_template: batchInfoList_xml.tpl
                   vars:
-                      id: 75123000004BtWZAA0
-                      jobId: 75023000003RtOYAA0
+                      id: 751P0000007qkgoIAA
+                      jobId: 750P0000006HoS1IAK
                       state: Completed
-                      cdate: "2022-03-30T16:12:16.000Z"
-                      smts: "2022-03-30T16:12:18.000Z"
+                      cdate: "2022-10-20T16:45:37.000Z"
+                      smts: "2022-10-20T16:45:38.000Z"
                       numrecsprocc: "1"
-                      tpt: "1125"
-                      apipt: "900"
+                      tpt: "273"
+                      apipt: "128"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOYAA0/batch/75123000004BtWZAA0/result
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoS1IAK/batch/751P0000007qkgoIAA/result
           body: null
           headers: *id002
       response:
@@ -125,10 +129,10 @@ interactions:
           body:
               string: '"Id","Success","Created","Error"
 
-                  "0012300000bVkm9AAC","true","true",""
+                  "001P000001vkheIIAQ","true","true",""
 
                   '
-    - request: &id015
+    - request: &id016
           method: POST
           uri: https://orgname.my.salesforce.com/services/async/vxx.0/job
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><operation>upsert</operation><object>Contact</object><externalIdFieldName>Email</externalIdFieldName><concurrencyMode>Parallel</concurrencyMode><contentType>CSV</contentType></jobInfo>
@@ -140,27 +144,30 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75023000003RtOdAAK
+                      id: 750P0000006HoQuIAK
                       object: Contact
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:19.000Z"
-                      smts: "2022-03-30T16:12:19.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:42.000Z"
+                      smts: "2022-10-20T16:45:42.000Z"
                       idField: Email
                       numbatchtotal: "0"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOdAAK/batch
-          body:
-              "1a\r\nFirstName,LastName,Email\r\n\r\n2b\r\nLindsay,Sitwell,lindsay.bluth@example.com\r\
-              \n\r\n25\r\nAudrey,Cain,audrey.cain@example.com\r\n\r\n2d\r\nMicheal,Bernard,michael.bernard@example.com\r\
-              \n\r\n25\r\nChloe,Myers,Chloe.Myers@example.com\r\n\r\n25\r\nRose,Larson,Rose.Larson@example.com\r\
-              \n\r\n21\r\nBrent,Ali,Brent.Ali@example.com\r\n\r\n2b\r\nJulia,Townsend,Julia.Townsend@example.com\r\
-              \n\r\n35\r\nBenjamin,Cunningham,Benjamin.Cunningham@example.com\r\n\r\n2d\r\n\
-              Christy,Stanton,Christy.Stanton@example.com\r\n\r\n2f\r\nSabrina,Roberson,Sabrina.Roberson@example.com\r\
-              \n\r\n29\r\nMichael,Bluth,Michael.Bluth@example.com\r\n\r\n27\r\nJavier,Banks,Javier.Banks@example.com\r\
-              \n\r\n21\r\nGOB,Bluth,GOB.Bluth@example.com\r\n\r\n29\r\nKaitlyn,Rubio,Kaitlyn.Rubio@example.com\r\
-              \n\r\n25\r\nJerry,Eaton,Jerry.Eaton@example.com\r\n\r\n2f\r\nGabrielle,Vargas,Gabrielle.Vargas@example.com\r\
-              \n\r\n0\r\n\r\n"
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoQuIAK/batch
+          body: "20\r\n\"FirstName\",\"LastName\",\"Email\"\r\n\r\n31\r\n\"Lindsay\",\"\
+              Sitwell\",\"lindsay.bluth@example.com\"\r\n\r\n2b\r\n\"Audrey\",\"Cain\",\"\
+              audrey.cain@example.com\"\r\n\r\n33\r\n\"Micheal\",\"Bernard\",\"michael.bernard@example.com\"\
+              \r\n\r\n2b\r\n\"Chloe\",\"Myers\",\"Chloe.Myers@example.com\"\r\n\r\n2b\r\n\"\
+              Rose\",\"Larson\",\"Rose.Larson@example.com\"\r\n\r\n27\r\n\"Brent\",\"Ali\"\
+              ,\"Brent.Ali@example.com\"\r\n\r\n31\r\n\"Julia\",\"Townsend\",\"Julia.Townsend@example.com\"\
+              \r\n\r\n3b\r\n\"Benjamin\",\"Cunningham\",\"Benjamin.Cunningham@example.com\"\
+              \r\n\r\n33\r\n\"Christy\",\"Stanton\",\"Christy.Stanton@example.com\"\r\n\r\n\
+              35\r\n\"Sabrina\",\"Roberson\",\"Sabrina.Roberson@example.com\"\r\n\r\n2f\r\n\
+              \"Michael\",\"Bluth\",\"Michael.Bluth@example.com\"\r\n\r\n2d\r\n\"Javier\"\
+              ,\"Banks\",\"Javier.Banks@example.com\"\r\n\r\n27\r\n\"GOB\",\"Bluth\",\"GOB.Bluth@example.com\"\
+              \r\n\r\n2f\r\n\"Kaitlyn\",\"Rubio\",\"Kaitlyn.Rubio@example.com\"\r\n\r\n2b\r\
+              \n\"Jerry\",\"Eaton\",\"Jerry.Eaton@example.com\"\r\n\r\n35\r\n\"Gabrielle\"\
+              ,\"Vargas\",\"Gabrielle.Vargas@example.com\"\r\n\r\n0\r\n\r\n"
           headers: *id002
       response:
           status: *id003
@@ -169,14 +176,14 @@ interactions:
               string:
                   include_template: batchInfo_xml.tpl
                   vars:
-                      id: 75123000004BtWeAAK
-                      jobId: 75023000003RtOdAAK
+                      id: 751P0000007qkgtIAA
+                      jobId: 750P0000006HoQuIAK
                       state: Queued
-                      cdate: "2022-03-30T16:12:20.000Z"
-                      smts: "2022-03-30T16:12:20.000Z"
+                      cdate: "2022-10-20T16:45:42.000Z"
+                      smts: "2022-10-20T16:45:42.000Z"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOdAAK
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoQuIAK
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><state>Closed</state></jobInfo>
           headers: *id002
       response:
@@ -186,18 +193,17 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75023000003RtOdAAK
+                      id: 750P0000006HoQuIAK
                       object: Contact
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:19.000Z"
-                      smts: "2022-03-30T16:12:19.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:42.000Z"
+                      smts: "2022-10-20T16:45:42.000Z"
                       state: Closed
                       idField: Email
                       qdbatches: "1"
-    - &id006
-      request:
+    - request: &id006
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOdAAK
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoQuIAK
           body: null
           headers: *id002
       response:
@@ -207,17 +213,17 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75023000003RtOdAAK
+                      id: 750P0000006HoQuIAK
                       object: Contact
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:19.000Z"
-                      smts: "2022-03-30T16:12:21.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:42.000Z"
+                      smts: "2022-10-20T16:45:43.000Z"
                       state: Closed
                       idField: Email
-                      numbatchip: "1"
+                      qdbatches: "1"
     - request: &id007
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOdAAK/batch
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoQuIAK/batch
           body: null
           headers: *id002
       response:
@@ -227,12 +233,27 @@ interactions:
               string:
                   include_template: batchInfoList_xml.tpl
                   vars:
-                      id: 75123000004BtWeAAK
-                      jobId: 75023000003RtOdAAK
-                      state: InProgress
-                      cdate: "2022-03-30T16:12:20.000Z"
-                      smts: "2022-03-30T16:12:21.000Z"
-    - *id006
+                      id: 751P0000007qkgtIAA
+                      jobId: 750P0000006HoQuIAK
+                      state: Queued
+                      cdate: "2022-10-20T16:45:42.000Z"
+                      smts: "2022-10-20T16:45:42.000Z"
+    - request: *id006
+      response:
+          status: *id005
+          headers: *id004
+          body:
+              string:
+                  include_template: jobInfo_upsert_xml.tpl
+                  vars:
+                      id: 750P0000006HoQuIAK
+                      object: Contact
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:42.000Z"
+                      smts: "2022-10-20T16:45:43.000Z"
+                      state: Closed
+                      idField: Email
+                      numbatchip: "1"
     - request: *id007
       response:
           status: *id005
@@ -241,17 +262,17 @@ interactions:
               string:
                   include_template: batchInfoList_xml.tpl
                   vars:
-                      id: 75123000004BtWeAAK
-                      jobId: 75023000003RtOdAAK
+                      id: 751P0000007qkgtIAA
+                      jobId: 750P0000006HoQuIAK
                       state: Completed
-                      cdate: "2022-03-30T16:12:20.000Z"
-                      smts: "2022-03-30T16:12:23.000Z"
+                      cdate: "2022-10-20T16:45:42.000Z"
+                      smts: "2022-10-20T16:45:45.000Z"
                       numrecsprocc: "16"
-                      tpt: "1419"
-                      apipt: "1304"
+                      tpt: "494"
+                      apipt: "288"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOdAAK/batch/75123000004BtWeAAK/result
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoQuIAK/batch/751P0000007qkgtIAA/result
           body: null
           headers: *id002
       response:
@@ -260,40 +281,40 @@ interactions:
           body:
               string: '"Id","Success","Created","Error"
 
-                  "0032300000SqTnqAAF","true","true",""
+                  "003P000001avB4GIAU","true","true",""
 
-                  "0032300000SqTnrAAF","true","true",""
+                  "003P000001avB4HIAU","true","true",""
 
-                  "0032300000SqTnsAAF","true","true",""
+                  "003P000001avB4IIAU","true","true",""
 
-                  "0032300000SqTntAAF","true","true",""
+                  "003P000001avB4JIAU","true","true",""
 
-                  "0032300000SqTnuAAF","true","true",""
+                  "003P000001avB4KIAU","true","true",""
 
-                  "0032300000SqTnvAAF","true","true",""
+                  "003P000001avB4LIAU","true","true",""
 
-                  "0032300000SqTnwAAF","true","true",""
+                  "003P000001avB4MIAU","true","true",""
 
-                  "0032300000SqTnxAAF","true","true",""
+                  "003P000001avB4NIAU","true","true",""
 
-                  "0032300000SqTnyAAF","true","true",""
+                  "003P000001avB4OIAU","true","true",""
 
-                  "0032300000SqTnzAAF","true","true",""
+                  "003P000001avB4PIAU","true","true",""
 
-                  "0032300000SqTo0AAF","true","true",""
+                  "003P000001avB4QIAU","true","true",""
 
-                  "0032300000SqTo1AAF","true","true",""
+                  "003P000001avB4RIAU","true","true",""
 
-                  "0032300000SqTo2AAF","true","true",""
+                  "003P000001avB4SIAU","true","true",""
 
-                  "0032300000SqTo3AAF","true","true",""
+                  "003P000001avB4TIAU","true","true",""
 
-                  "0032300000SqTo4AAF","true","true",""
+                  "003P000001avB4UIAU","true","true",""
 
-                  "0032300000SqTo5AAF","true","true",""
+                  "003P000001avB4VIAU","true","true",""
 
                   '
-    - request: &id018
+    - request: &id017
           method: POST
           uri: https://orgname.my.salesforce.com/services/async/vxx.0/job
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><operation>insert</operation><object>Opportunity</object><concurrencyMode>Parallel</concurrencyMode><contentType>CSV</contentType></jobInfo>
@@ -305,59 +326,45 @@ interactions:
               string:
                   include_template: jobInfo_insert_xml.tpl
                   vars:
-                      id: 75023000003RtOiAAK
+                      id: 750P0000006HoS6IAK
                       object: Opportunity
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:24.000Z"
-                      smts: "2022-03-30T16:12:24.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:47.000Z"
+                      smts: "2022-10-20T16:45:47.000Z"
                       qdbatches: "0"
                       numbatchtotal: "0"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOiAAK
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoS6IAK
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><state>Closed</state></jobInfo>
           headers: *id002
-      response:
+      response: &id009
           status: *id005
           headers: *id004
           body:
               string:
                   include_template: jobInfo_insert_xml.tpl
                   vars:
-                      id: 75023000003RtOiAAK
+                      id: 750P0000006HoS6IAK
                       object: Opportunity
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:24.000Z"
-                      smts: "2022-03-30T16:12:24.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:47.000Z"
+                      smts: "2022-10-20T16:45:47.000Z"
                       state: Closed
                       qdbatches: "0"
                       numbatchtotal: "0"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOiAAK
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoS6IAK
           body: null
           headers: *id002
-      response:
-          status: *id005
-          headers: *id004
-          body:
-              string:
-                  include_template: jobInfo_insert_xml.tpl
-                  vars:
-                      id: 75023000003RtOiAAK
-                      object: Opportunity
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:24.000Z"
-                      smts: "2022-03-30T16:12:25.000Z"
-                      state: Closed
-                      qdbatches: "0"
-                      numbatchtotal: "0"
+      response: *id009
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOiAAK/batch
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoS6IAK/batch
           body: null
           headers: *id002
-      response: &id014
+      response: &id015
           status: *id005
           headers: *id004
           body:
@@ -371,14 +378,14 @@ interactions:
           headers: *id002
       response:
           status: *id005
-          headers: &id009
+          headers: &id010
               Content-Type:
                   - application/json;charset=UTF-8
               Others: Elided
           body:
               string: "{\n  \"totalSize\" : 1,\n  \"done\" : true,\n  \"records\" : [ {\n\
                   \    \"attributes\" : {\n      \"type\" : \"Account\",\n      \"url\" : \"\
-                  /services/data/vxx.0/sobjects/Account/0012300000bVkm9AAC\"\n    },\n    \"\
+                  /services/data/vxx.0/sobjects/Account/001P000001vkheIIAQ\"\n    },\n    \"\
                   Name\" : \"Sitwell-Bluth\"\n  } ]\n}"
     - request:
           method: GET
@@ -387,50 +394,50 @@ interactions:
           headers: *id002
       response:
           status: *id005
-          headers: *id009
+          headers: *id010
           body:
               string:
                   "{\n  \"totalSize\" : 16,\n  \"done\" : true,\n  \"records\" : [ {\n\
                   \    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"\
-                  /services/data/vxx.0/sobjects/Contact/0032300000SqTnqAAF\"\n    },\n    \"\
+                  /services/data/vxx.0/sobjects/Contact/003P000001avB4GIAU\"\n    },\n    \"\
                   FirstName\" : \"Lindsay\"\n  }, {\n    \"attributes\" : {\n      \"type\"\
-                  \ : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnrAAF\"\
+                  \ : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4HIAU\"\
                   \n    },\n    \"FirstName\" : \"Audrey\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnsAAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4IIAU\"\
                   \n    },\n    \"FirstName\" : \"Micheal\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTntAAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4JIAU\"\
                   \n    },\n    \"FirstName\" : \"Chloe\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnuAAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4KIAU\"\
                   \n    },\n    \"FirstName\" : \"Rose\"\n  }, {\n    \"attributes\" : {\n \
-                  \     \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnvAAF\"\
+                  \     \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4LIAU\"\
                   \n    },\n    \"FirstName\" : \"Brent\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnwAAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4MIAU\"\
                   \n    },\n    \"FirstName\" : \"Julia\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnxAAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4NIAU\"\
                   \n    },\n    \"FirstName\" : \"Benjamin\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnyAAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4OIAU\"\
                   \n    },\n    \"FirstName\" : \"Christy\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnzAAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4PIAU\"\
                   \n    },\n    \"FirstName\" : \"Sabrina\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTo0AAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4QIAU\"\
                   \n    },\n    \"FirstName\" : \"Michael\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTo1AAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4RIAU\"\
                   \n    },\n    \"FirstName\" : \"Javier\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTo2AAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4SIAU\"\
                   \n    },\n    \"FirstName\" : \"GOB\"\n  }, {\n    \"attributes\" : {\n  \
-                  \    \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTo3AAF\"\
+                  \    \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4TIAU\"\
                   \n    },\n    \"FirstName\" : \"Kaitlyn\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTo4AAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4UIAU\"\
                   \n    },\n    \"FirstName\" : \"Jerry\"\n  }, {\n    \"attributes\" : {\n\
-                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTo5AAF\"\
+                  \      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4VIAU\"\
                   \n    },\n    \"FirstName\" : \"Gabrielle\"\n  } ]\n}"
     - *id001
-    - *id010
-    - *id001
     - *id011
     - *id001
     - *id012
-    - request: *id013
+    - *id001
+    - *id013
+    - request: *id014
       response:
           status: *id003
           headers: *id004
@@ -438,15 +445,15 @@ interactions:
               string:
                   include_template: jobInfo_insert_xml.tpl
                   vars:
-                      id: 75023000003RtOnAAK
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:29.000Z"
-                      smts: "2022-03-30T16:12:29.000Z"
+                      id: 750P0000006HoSBIA0
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:52.000Z"
+                      smts: "2022-10-20T16:45:52.000Z"
                       qdbatches: "0"
                       numbatchtotal: "0"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOnAAK
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSBIA0
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><state>Closed</state></jobInfo>
           headers: *id002
       response:
@@ -456,16 +463,16 @@ interactions:
               string:
                   include_template: jobInfo_insert_xml.tpl
                   vars:
-                      id: 75023000003RtOnAAK
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:29.000Z"
-                      smts: "2022-03-30T16:12:29.000Z"
+                      id: 750P0000006HoSBIA0
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:52.000Z"
+                      smts: "2022-10-20T16:45:52.000Z"
                       state: Closed
                       qdbatches: "0"
                       numbatchtotal: "0"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOnAAK
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSBIA0
           body: null
           headers: *id002
       response:
@@ -475,20 +482,20 @@ interactions:
               string:
                   include_template: jobInfo_insert_xml.tpl
                   vars:
-                      id: 75023000003RtOnAAK
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:29.000Z"
-                      smts: "2022-03-30T16:12:30.000Z"
+                      id: 750P0000006HoSBIA0
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:52.000Z"
+                      smts: "2022-10-20T16:45:53.000Z"
                       state: Closed
                       qdbatches: "0"
                       numbatchtotal: "0"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOnAAK/batch
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSBIA0/batch
           body: null
           headers: *id002
-      response: *id014
-    - request: *id015
+      response: *id015
+    - request: *id016
       response:
           status: *id003
           headers: *id004
@@ -496,20 +503,21 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75023000003RtOsAAK
+                      id: 750P0000006HoSGIA0
                       object: Contact
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:32.000Z"
-                      smts: "2022-03-30T16:12:32.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:56.000Z"
+                      smts: "2022-10-20T16:45:56.000Z"
                       idField: Email
                       numbatchtotal: "0"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOsAAK/batch
-          body:
-              "1a\r\nFirstName,LastName,Email\r\n\r\n29\r\nNichael,Bluth,Michael.Bluth@example.com\r\
-              \n\r\n2a\r\nGeorge Oscar,Bluth,GOB.Bluth@example.com\r\n\r\n29\r\nLindsay,Bluth,lindsay.bluth@example.com\r\
-              \n\r\n29\r\nAnnyong,Bluth,annyong.bluth@example.com\r\n\r\n0\r\n\r\n"
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSGIA0/batch
+          body: "20\r\n\"FirstName\",\"LastName\",\"Email\"\r\n\r\n2f\r\n\"Nichael\",\"\
+              Bluth\",\"Michael.Bluth@example.com\"\r\n\r\n30\r\n\"George Oscar\",\"Bluth\"\
+              ,\"GOB.Bluth@example.com\"\r\n\r\n2f\r\n\"Lindsay\",\"Bluth\",\"lindsay.bluth@example.com\"\
+              \r\n\r\n2f\r\n\"Annyong\",\"Bluth\",\"annyong.bluth@example.com\"\r\n\r\n0\r\
+              \n\r\n"
           headers: *id002
       response:
           status: *id003
@@ -518,14 +526,14 @@ interactions:
               string:
                   include_template: batchInfo_xml.tpl
                   vars:
-                      id: 75123000004BtLhAAK
-                      jobId: 75023000003RtOsAAK
+                      id: 751P0000007qkgyIAA
+                      jobId: 750P0000006HoSGIA0
                       state: Queued
-                      cdate: "2022-03-30T16:12:32.000Z"
-                      smts: "2022-03-30T16:12:32.000Z"
+                      cdate: "2022-10-20T16:45:57.000Z"
+                      smts: "2022-10-20T16:45:57.000Z"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOsAAK
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSGIA0
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><state>Closed</state></jobInfo>
           headers: *id002
       response:
@@ -535,17 +543,20 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75023000003RtOsAAK
+                      id: 750P0000006HoSGIA0
                       object: Contact
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:32.000Z"
-                      smts: "2022-03-30T16:12:32.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:56.000Z"
+                      smts: "2022-10-20T16:45:56.000Z"
                       state: Closed
                       idField: Email
-                      qdbatches: "1"
-    - request: &id016
+                      numbatchcomp: "1"
+                      numrecsprocc: "4"
+                      tpt: "343"
+                      apipt: "183"
+    - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOsAAK
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSGIA0
           body: null
           headers: *id002
       response:
@@ -555,17 +566,20 @@ interactions:
               string:
                   include_template: jobInfo_upsert_xml.tpl
                   vars:
-                      id: 75023000003RtOsAAK
+                      id: 750P0000006HoSGIA0
                       object: Contact
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:32.000Z"
-                      smts: "2022-03-30T16:12:33.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:45:56.000Z"
+                      smts: "2022-10-20T16:45:57.000Z"
                       state: Closed
                       idField: Email
-                      qdbatches: "1"
-    - request: &id017
+                      numbatchcomp: "1"
+                      numrecsprocc: "4"
+                      tpt: "343"
+                      apipt: "183"
+    - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOsAAK/batch
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSGIA0/batch
           body: null
           headers: *id002
       response:
@@ -575,49 +589,17 @@ interactions:
               string:
                   include_template: batchInfoList_xml.tpl
                   vars:
-                      id: 75123000004BtLhAAK
-                      jobId: 75023000003RtOsAAK
-                      state: Queued
-                      cdate: "2022-03-30T16:12:32.000Z"
-                      smts: "2022-03-30T16:12:32.000Z"
-    - request: *id016
-      response:
-          status: *id005
-          headers: *id004
-          body:
-              string:
-                  include_template: jobInfo_upsert_xml.tpl
-                  vars:
-                      id: 75023000003RtOsAAK
-                      object: Contact
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:32.000Z"
-                      smts: "2022-03-30T16:12:33.000Z"
-                      state: Closed
-                      idField: Email
-                      numbatchip: "1"
-                      numrecsprocc: "4"
-                      tpt: "599"
-                      apipt: "462"
-    - request: *id017
-      response:
-          status: *id005
-          headers: *id004
-          body:
-              string:
-                  include_template: batchInfoList_xml.tpl
-                  vars:
-                      id: 75123000004BtLhAAK
-                      jobId: 75023000003RtOsAAK
+                      id: 751P0000007qkgyIAA
+                      jobId: 750P0000006HoSGIA0
                       state: Completed
-                      cdate: "2022-03-30T16:12:32.000Z"
-                      smts: "2022-03-30T16:12:34.000Z"
+                      cdate: "2022-10-20T16:45:57.000Z"
+                      smts: "2022-10-20T16:45:58.000Z"
                       numrecsprocc: "4"
-                      tpt: "599"
-                      apipt: "462"
+                      tpt: "343"
+                      apipt: "183"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOsAAK/batch/75123000004BtLhAAK/result
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSGIA0/batch/751P0000007qkgyIAA/result
           body: null
           headers: *id002
       response:
@@ -626,16 +608,16 @@ interactions:
           body:
               string: '"Id","Success","Created","Error"
 
-                  "0032300000SqTo0AAF","true","false",""
+                  "003P000001avB4QIAU","true","false",""
 
-                  "0032300000SqTo2AAF","true","false",""
+                  "003P000001avB4SIAU","true","false",""
 
-                  "0032300000SqTnqAAF","true","false",""
+                  "003P000001avB4GIAU","true","false",""
 
-                  "0032300000SqToBAAV","true","true",""
+                  "003P000001avB4lIAE","true","true",""
 
                   '
-    - request: *id018
+    - request: *id017
       response:
           status: *id003
           headers: *id004
@@ -643,20 +625,20 @@ interactions:
               string:
                   include_template: jobInfo_insert_xml.tpl
                   vars:
-                      id: 75023000003RtOxAAK
+                      id: 750P0000006HoSLIA0
                       object: Opportunity
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:37.000Z"
-                      smts: "2022-03-30T16:12:37.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:01.000Z"
+                      smts: "2022-10-20T16:46:01.000Z"
                       qdbatches: "0"
                       numbatchtotal: "0"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOxAAK/batch
-          body:
-              "2e\r\nName,StageName,CloseDate,AccountId,ContactId\r\n\r\n43\r\nIllusional\
-              \ Opportunity,In Progress,2021-10-03,,0032300000SqTo2AAF\r\n\r\n42\r\nEspionage\
-              \ Opportunity,In Progress,2021-10-03,,0032300000SqToBAAV\r\n\r\n0\r\n\r\n"
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSLIA0/batch
+          body: "38\r\n\"Name\",\"StageName\",\"CloseDate\",\"AccountId\",\"ContactId\"\r\
+              \n\r\n4d\r\n\"Illusional Opportunity\",\"In Progress\",\"2021-10-03\",\"\",\"\
+              003P000001avB4SIAU\"\r\n\r\n4c\r\n\"Espionage Opportunity\",\"In Progress\"\
+              ,\"2021-10-03\",\"\",\"003P000001avB4lIAE\"\r\n\r\n0\r\n\r\n"
           headers: *id002
       response:
           status: *id003
@@ -665,14 +647,14 @@ interactions:
               string:
                   include_template: batchInfo_xml.tpl
                   vars:
-                      id: 75123000004BtRVAA0
-                      jobId: 75023000003RtOxAAK
+                      id: 751P0000007qkh3IAA
+                      jobId: 750P0000006HoSLIA0
                       state: Queued
-                      cdate: "2022-03-30T16:12:38.000Z"
-                      smts: "2022-03-30T16:12:38.000Z"
+                      cdate: "2022-10-20T16:46:01.000Z"
+                      smts: "2022-10-20T16:46:01.000Z"
     - request:
           method: POST
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOxAAK
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSLIA0
           body: <jobInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload"><state>Closed</state></jobInfo>
           headers: *id002
       response:
@@ -682,16 +664,16 @@ interactions:
               string:
                   include_template: jobInfo_insert_xml.tpl
                   vars:
-                      id: 75023000003RtOxAAK
+                      id: 750P0000006HoSLIA0
                       object: Opportunity
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:37.000Z"
-                      smts: "2022-03-30T16:12:37.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:01.000Z"
+                      smts: "2022-10-20T16:46:01.000Z"
                       state: Closed
                       qdbatches: "1"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOxAAK
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSLIA0
           body: null
           headers: *id002
       response:
@@ -701,17 +683,17 @@ interactions:
               string:
                   include_template: jobInfo_insert_xml.tpl
                   vars:
-                      id: 75023000003RtOxAAK
+                      id: 750P0000006HoSLIA0
                       object: Opportunity
-                      creator: 00523000002KbrQAAS
-                      cdate: "2022-03-30T16:12:37.000Z"
-                      smts: "2022-03-30T16:12:38.000Z"
+                      creator: 005P000000AyPpYIAV
+                      cdate: "2022-10-20T16:46:01.000Z"
+                      smts: "2022-10-20T16:46:02.000Z"
                       state: Closed
                       qdbatches: "0"
                       numbatchip: "1"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOxAAK/batch
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSLIA0/batch
           body: null
           headers: *id002
       response:
@@ -721,17 +703,17 @@ interactions:
               string:
                   include_template: batchInfoList_xml.tpl
                   vars:
-                      id: 75123000004BtRVAA0
-                      jobId: 75023000003RtOxAAK
+                      id: 751P0000007qkh3IAA
+                      jobId: 750P0000006HoSLIA0
                       state: Completed
-                      cdate: "2022-03-30T16:12:38.000Z"
-                      smts: "2022-03-30T16:12:40.000Z"
+                      cdate: "2022-10-20T16:46:01.000Z"
+                      smts: "2022-10-20T16:46:03.000Z"
                       numrecsprocc: "2"
-                      tpt: "965"
-                      apipt: "814"
+                      tpt: "623"
+                      apipt: "453"
     - request:
           method: GET
-          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/75023000003RtOxAAK/batch/75123000004BtRVAA0/result
+          uri: https://orgname.my.salesforce.com/services/async/vxx.0/job/750P0000006HoSLIA0/batch/751P0000007qkh3IAA/result
           body: null
           headers: *id002
       response:
@@ -740,9 +722,9 @@ interactions:
           body:
               string: '"Id","Success","Created","Error"
 
-                  "0062300000E9DZdAAN","true","true",""
+                  "006P000000FNGu6IAH","true","true",""
 
-                  "0062300000E9DZeAAN","true","true",""
+                  "006P000000FNGu7IAH","true","true",""
 
                   '
     - request:
@@ -752,60 +734,60 @@ interactions:
           headers: *id002
       response:
           status: *id005
-          headers: *id009
+          headers: *id010
           body:
               string:
                   "{\n  \"totalSize\" : 17,\n  \"done\" : true,\n  \"records\" : [ {\n\
                   \    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"\
-                  /services/data/vxx.0/sobjects/Contact/0032300000SqTnqAAF\"\n    },\n    \"\
+                  /services/data/vxx.0/sobjects/Contact/003P000001avB4GIAU\"\n    },\n    \"\
                   FirstName\" : \"Lindsay\",\n    \"Opportunities\" : null\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnrAAF\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4HIAU\"\
                   \n    },\n    \"FirstName\" : \"Audrey\",\n    \"Opportunities\" : null\n\
                   \  }, {\n    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\"\
-                  \ : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnsAAF\"\n    },\n\
+                  \ : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4IIAU\"\n    },\n\
                   \    \"FirstName\" : \"Micheal\",\n    \"Opportunities\" : null\n  }, {\n\
                   \    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"\
-                  /services/data/vxx.0/sobjects/Contact/0032300000SqTntAAF\"\n    },\n    \"\
+                  /services/data/vxx.0/sobjects/Contact/003P000001avB4JIAU\"\n    },\n    \"\
                   FirstName\" : \"Chloe\",\n    \"Opportunities\" : null\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnuAAF\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4KIAU\"\
                   \n    },\n    \"FirstName\" : \"Rose\",\n    \"Opportunities\" : null\n  },\
                   \ {\n    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\"\
-                  \ : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnvAAF\"\n    },\n\
+                  \ : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4LIAU\"\n    },\n\
                   \    \"FirstName\" : \"Brent\",\n    \"Opportunities\" : null\n  }, {\n  \
-                  \  \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnwAAF\"\
+                  \  \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4MIAU\"\
                   \n    },\n    \"FirstName\" : \"Julia\",\n    \"Opportunities\" : null\n \
                   \ }, {\n    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\"\
-                  \ : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnxAAF\"\n    },\n\
+                  \ : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4NIAU\"\n    },\n\
                   \    \"FirstName\" : \"Benjamin\",\n    \"Opportunities\" : null\n  }, {\n\
                   \    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"\
-                  /services/data/vxx.0/sobjects/Contact/0032300000SqTnyAAF\"\n    },\n    \"\
+                  /services/data/vxx.0/sobjects/Contact/003P000001avB4OIAU\"\n    },\n    \"\
                   FirstName\" : \"Christy\",\n    \"Opportunities\" : null\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTnzAAF\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4PIAU\"\
                   \n    },\n    \"FirstName\" : \"Sabrina\",\n    \"Opportunities\" : null\n\
                   \  }, {\n    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\"\
-                  \ : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTo0AAF\"\n    },\n\
+                  \ : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4QIAU\"\n    },\n\
                   \    \"FirstName\" : \"Nichael\",\n    \"Opportunities\" : null\n  }, {\n\
                   \    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"\
-                  /services/data/vxx.0/sobjects/Contact/0032300000SqTo1AAF\"\n    },\n    \"\
+                  /services/data/vxx.0/sobjects/Contact/003P000001avB4RIAU\"\n    },\n    \"\
                   FirstName\" : \"Javier\",\n    \"Opportunities\" : null\n  }, {\n    \"attributes\"\
-                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTo2AAF\"\
+                  \ : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4SIAU\"\
                   \n    },\n    \"FirstName\" : \"George Oscar\",\n    \"Opportunities\" : {\n\
                   \      \"totalSize\" : 1,\n      \"done\" : true,\n      \"records\" : [ {\n\
                   \        \"attributes\" : {\n          \"type\" : \"Opportunity\",\n     \
-                  \     \"url\" : \"/services/data/vxx.0/sobjects/Opportunity/0062300000E9DZdAAN\"\
+                  \     \"url\" : \"/services/data/vxx.0/sobjects/Opportunity/006P000000FNGu6IAH\"\
                   \n        },\n        \"Name\" : \"Illusional Opportunity\"\n      } ]\n \
                   \   }\n  }, {\n    \"attributes\" : {\n      \"type\" : \"Contact\",\n   \
-                  \   \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTo3AAF\"\
+                  \   \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4TIAU\"\
                   \n    },\n    \"FirstName\" : \"Kaitlyn\",\n    \"Opportunities\" : null\n\
                   \  }, {\n    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\"\
-                  \ : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTo4AAF\"\n    },\n\
+                  \ : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4UIAU\"\n    },\n\
                   \    \"FirstName\" : \"Jerry\",\n    \"Opportunities\" : null\n  }, {\n  \
-                  \  \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/0032300000SqTo5AAF\"\
+                  \  \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\" : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4VIAU\"\
                   \n    },\n    \"FirstName\" : \"Gabrielle\",\n    \"Opportunities\" : null\n\
                   \  }, {\n    \"attributes\" : {\n      \"type\" : \"Contact\",\n      \"url\"\
-                  \ : \"/services/data/vxx.0/sobjects/Contact/0032300000SqToBAAV\"\n    },\n\
+                  \ : \"/services/data/vxx.0/sobjects/Contact/003P000001avB4lIAE\"\n    },\n\
                   \    \"FirstName\" : \"Annyong\",\n    \"Opportunities\" : {\n      \"totalSize\"\
                   \ : 1,\n      \"done\" : true,\n      \"records\" : [ {\n        \"attributes\"\
-                  \ : {\n          \"type\" : \"Opportunity\",\n          \"url\" : \"/services/data/vxx.0/sobjects/Opportunity/0062300000E9DZeAAN\"\
+                  \ : {\n          \"type\" : \"Opportunity\",\n          \"url\" : \"/services/data/vxx.0/sobjects/Opportunity/006P000000FNGu7IAH\"\
                   \n        },\n        \"Name\" : \"Espionage Opportunity\"\n      } ]\n  \
                   \  }\n  } ]\n}"
diff --git a/cumulusci/tasks/bulkdata/tests/test_step.py b/cumulusci/tasks/bulkdata/tests/test_step.py
index 274ef6aec..ef6854a95 100644
--- a/cumulusci/tasks/bulkdata/tests/test_step.py
+++ b/cumulusci/tasks/bulkdata/tests/test_step.py
@@ -488,15 +488,15 @@ class TestBulkApiDmlOperation:
         )
 
         serialized = step._serialize_csv_record(step.fields)
-        assert serialized == b"Id,FirstName,LastName\r\n"
+        assert serialized == b'"Id","FirstName","LastName"\r\n'
 
         record = ["1", "Bob", "Ross"]
         serialized = step._serialize_csv_record(record)
-        assert serialized == b"1,Bob,Ross\r\n"
+        assert serialized == b'"1","Bob","Ross"\r\n'
 
         record = ["col1", "multiline\ncol2"]
         serialized = step._serialize_csv_record(record)
-        assert serialized == b'col1,"multiline\ncol2"\r\n'
+        assert serialized == b'"col1","multiline\ncol2"\r\n'
 
     def test_batch(self):
         context = mock.Mock()
@@ -514,13 +514,13 @@ class TestBulkApiDmlOperation:
 
         assert len(results) == 2
         assert list(results[0]) == [
-            "LastName\r\n".encode("utf-8"),
-            "Test\r\n".encode("utf-8"),
-            "Test2\r\n".encode("utf-8"),
+            '"LastName"\r\n'.encode("utf-8"),
+            '"Test"\r\n'.encode("utf-8"),
+            '"Test2"\r\n'.encode("utf-8"),
         ]
         assert list(results[1]) == [
-            "LastName\r\n".encode("utf-8"),
-            "Test3\r\n".encode("utf-8"),
+            '"LastName"\r\n'.encode("utf-8"),
+            '"Test3"\r\n'.encode("utf-8"),
         ]
 
     def test_batch__character_limit(self):
@@ -548,13 +548,13 @@ class TestBulkApiDmlOperation:
 
         assert len(results) == 2
         assert list(results[0]) == [
-            "LastName\r\n".encode("utf-8"),
-            "Test\r\n".encode("utf-8"),
-            "Test2\r\n".encode("utf-8"),
+            '"LastName"\r\n'.encode("utf-8"),
+            '"Test"\r\n'.encode("utf-8"),
+            '"Test2"\r\n'.encode("utf-8"),
         ]
         assert list(results[1]) == [
-            "LastName\r\n".encode("utf-8"),
-            "Test3\r\n".encode("utf-8"),
+            '"LastName"\r\n'.encode("utf-8"),
+            '"Test3"\r\n'.encode("utf-8"),
         ]
 
     @mock.patch("cumulusci.tasks.bulkdata.step.download_file")
diff --git a/cumulusci/tasks/tests/test_datadictionary.py b/cumulusci/tasks/tests/test_datadictionary.py
index 4b1e0bda9..3da39b251 100644
--- a/cumulusci/tasks/tests/test_datadictionary.py
+++ b/cumulusci/tasks/tests/test_datadictionary.py
@@ -66,7 +66,7 @@ class TestGenerateDataDictionary:
 
         assert (
             result
-            == "Object Label,Object API Name,Object Description,Version Introduced,Version Deleted\r\nTest,test__Test__c,Description,Test 1.1,Test 1.2\r\n"
+            == '"Object Label","Object API Name","Object Description","Version Introduced","Version Deleted"\r\n"Test","test__Test__c","Description","Test 1.1","Test 1.2"\r\n'
         )
 
     def test_write_field_results(self):
@@ -152,10 +152,15 @@ class TestGenerateDataDictionary:
         result = f.read()
 
         assert result == (
-            "Object Label,Object API Name,Field Label,Field API Name,Type,Picklist Values,Help Text,Field Description,Version Introduced,Version Picklist Values Last Changed,Version Help Text Last Changed,Version Deleted\r\n"
-            "Account,Account,Desc,test__Desc__c,Text,,,,Test 1.2,,,\r\n"
-            "Test Object,test__Test__c,Type,test__Type__c,Picklist,Foo; Bar; New Value,New Help,Description,Test 1.1,Test 1.2,Test 1.2,\r\n"
-            "Test Object,test__Test__c,Account,test__Account__c,Lookup to Account,,Help,Description,Test 1.1,,,Test 1.2\r\n"
+            '"Object Label","Object API Name","Field Label","Field API Name",'
+            '"Type","Picklist Values","Help Text","Field Description","Version Introduced",'
+            '"Version Picklist Values Last Changed","Version Help Text Last Changed",'
+            '"Version Deleted"\r\n"Account","Account","Desc","test__Desc__c","Text",'
+            '"","","","Test 1.2","","",""\r\n"Test Object","test__Test__c","Type",'
+            '"test__Type__c","Picklist","Foo; Bar; New Value","New Help","Description",'
+            '"Test 1.1","Test 1.2","Test 1.2",""\r\n"Test Object","test__Test__c",'
+            '"Account","test__Account__c","Lookup to Account","","Help","Description",'
+            '"Test 1.1","","","Test 1.2"\r\n'
         )
 
     def test_write_field_results__omit_sobjects(self):
@@ -236,9 +241,13 @@ class TestGenerateDataDictionary:
         result = f.read()
 
         assert result == (
-            "Object Label,Object API Name,Field Label,Field API Name,Type,Picklist Values,Help Text,Field Description,Version Introduced,Version Picklist Values Last Changed,Version Help Text Last Changed,Version Deleted\r\n"
-            "Test Object,test__Test__c,Type,test__Type__c,Picklist,Foo; Bar; New Value,New Help,Description,Test 1.1,Test 1.2,Test 1.2,\r\n"
-            "Test Object,test__Test__c,Account,test__Account__c,Lookup to Account,,Help,Description,Test 1.1,,,Test 1.2\r\n"
+            '"Object Label","Object API Name","Field Label","Field API Name","Type",'
+            '"Picklist Values","Help Text","Field Description","Version Introduced",'
+            '"Version Picklist Values Last Changed","Version Help Text Last Changed",'
+            '"Version Deleted"\r\n"Test Object","test__Test__c","Type","test__Type__c",'
+            '"Picklist","Foo; Bar; New Value","New Help","Description","Test 1.1","Test 1.2",'
+            '"Test 1.2",""\r\n"Test Object","test__Test__c","Account","test__Account__c",'
+            '"Lookup to Account","","Help","Description","Test 1.1","","","Test 1.2"\r\n'
         )
 
     def test_should_process_object(self):
@@ -1270,14 +1279,14 @@ class TestGenerateDataDictionary:
         m.return_value.write.assert_has_calls(
             [
                 call(
-                    "Object Label,Object API Name,Object Description,Version Introduced,Version Deleted\r\n"
+                    '"Object Label","Object API Name","Object Description","Version Introduced","Version Deleted"\r\n'
                 ),
-                call("Test,test__Test__c,Description,Project 1.1,\r\n"),
+                call('"Test","test__Test__c","Description","Project 1.1",""\r\n'),
                 call(
-                    "Object Label,Object API Name,Field Label,Field API Name,Type,Picklist Values,Help Text,Field Description,Version Introduced,Version Picklist Values Last Changed,Version Help Text Last Changed,Version Deleted\r\n"
+                    '"Object Label","Object API Name","Field Label","Field API Name","Type","Picklist Values","Help Text","Field Description","Version Introduced","Version Picklist Values Last Changed","Version Help Text Last Changed","Version Deleted"\r\n'
                 ),
                 call(
-                    "Test,test__Test__c,Type,test__Type__c,Text (255),,Type of field.,,Project 1.1,,,\r\n"
+                    '"Test","test__Test__c","Type","test__Type__c","Text (255)","","Type of field.","","Project 1.1","","",""\r\n'
                 ),
             ],
             any_order=True,
@@ -1359,17 +1368,17 @@ class TestGenerateDataDictionary:
         m.return_value.write.assert_has_calls(
             [
                 call(
-                    "Object Label,Object API Name,Object Description,Version Introduced,Version Deleted\r\n"
+                    '"Object Label","Object API Name","Object Description","Version Introduced","Version Deleted"\r\n'
                 ),
-                call("Test,test__Test__c,Description,Project 1.1,\r\n"),
+                call('"Test","test__Test__c","Description","Project 1.1",""\r\n'),
                 call(
-                    "Object Label,Object API Name,Field Label,Field API Name,Type,Picklist Values,Help Text,Field Description,Version Introduced,Version Picklist Values Last Changed,Version Help Text Last Changed,Version Deleted\r\n"
+                    '"Object Label","Object API Name","Field Label","Field API Name","Type","Picklist Values","Help Text","Field Description","Version Introduced","Version Picklist Values Last Changed","Version Help Text Last Changed","Version Deleted"\r\n'
                 ),
                 call(
-                    "Test,test__Test__c,Type,test__Type__c,Text (255),,Type of field.,,Project 1.1,,,\r\n"
+                    '"Test","test__Test__c","Type","test__Type__c","Text (255)","","Type of field.","","Project 1.1","","",""\r\n'
                 ),
                 call(
-                    "Test,test__Test__c,Description,test__Description__c,Text (255),,Description of field.,,Project Prerelease,,,\r\n"
+                    '"Test","test__Test__c","Description","test__Description__c","Text (255)","","Description of field.","","Project Prerelease","","",""\r\n'
                 ),
             ],
             any_order=True,