---
schema_version: "1"
id: 746eea89aa6c837f1862fe11e9b24a45a4e9382764a88523b1d4a6e72fae4295
title: DRGlobal Class and Methods
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/xcloud/264-0-0/os_drglobal_class_and_methods_47814.md
canonical_url: https://help.salesforce.com/s/articleView?id=xcloud.os_drglobal_class_and_methods_47814.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: dfc00e9b35064a92e0d000396439ea6cbab6b45b2019ac7f1a9253d79848a740
description: Use the ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput) Connect API to call Data Mappers from Apex through the DRGlobal Apex class. Starting with Summer ’25, replace the existing methods in the DRGlobal Apex classes with the Connect API.
products:
  - Omnistudio
release: "264"
---
# DRGlobal Class and Methods

Use the ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput) Connect API to call Data Mappers from Apex through the DRGlobal Apex class. Starting with Summer ’25, replace the existing methods in the DRGlobal Apex classes with the Connect API.

## Process a JSON String Object List Using a Specified Data Mapper

The objectList must be a JSON String.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e47">Connect API</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e50">Existing Method (Replace with Connect API)</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Connect API" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e47 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>List&lt;String&gt; jsonInputData = new List&lt;String&gt;();
jsonInputData.add(objectList);

ConnectApi.DataMapperExecuteInputRepresentation apexInput = new ConnectApi.DataMapperExecuteInputRepresentation();
apexInput.dataMapperInput = jsonInputData;
apexInput.inputType = 'JSON';

ConnectApi.DataMapperExecuteOptionsRepresentation options = new ConnectApi.DataMapperExecuteOptionsRepresentation();

options.ignoreCache = false;
<strong>options.shouldSendLegacyResponse = true;</strong>
apexInput.options = options;

<strong>ConnectApi.DataMapperExecuteOutputRepresentation output = ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput);</strong>

List&lt;String&gt; innerResponse = output.response;

String currentResponse = innerResponse[0];

System.debug(currentResponse);

Map&lt;String, Object&gt; outerMap = (Map&lt;String, Object&gt;) JSON.deserializeUntyped(currentResponse);

List&lt;String&gt; keys = new List&lt;String&gt;(outerMap.keySet());

System.debug(outerMap.get('drSObjectResults'));
</code></pre>
            </td>

            <td data-label="Existing Method (Replace with Connect API)" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e50 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
static namespace.DRProcessResult processObjectsJSON(String objectList, String bundleName)

namespace.DRProcessResult res = namespace.DrGlobal.processObjectsJSON(objectList, bundleName);
</code></pre>
            </td>

          </tr>
        </tbody>
      </table>

## Process a List of sObjects Using a Specified Data Mapper

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e98">Connect API</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e101">Existing Method (Replace with Connect API)</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Connect API" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e98 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
String jsonstring = JSON.serialize(objectList);
List&lt;String&gt; jsonInputData = new List&lt;String&gt;();
jsonInputData.add(jsonString);

ConnectApi.DataMapperExecuteInputRepresentation apexInput = new ConnectApi.DataMapperExecuteInputRepresentation();
apexInput.dataMapperInput = jsonInputData;apexInput.inputType = 'JSON';

ConnectApi.DataMapperExecuteOptionsRepresentation options = new ConnectApi.DataMapperExecuteOptionsRepresentation();
options.ignoreCache = false;
<strong>options.shouldSendLegacyResponse = true;</strong>

apexInput.options = options;

ConnectApi.DataMapperExecuteOutputRepresentation output = ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput);

List&lt;String&gt; innerResponse = output.response;

for (String currentResponse : innerResponse) {
   System.debug(currentResponse);
   Map&lt;String, Object&gt; outerMap = (Map&lt;String, Object&gt;)JSON.deserializeUntyped(currentResponse);
   List&lt;String&gt; keys = new List&lt;String&gt;(outerMap.keySet());
   System.debug(outerMap.get('drSObjectResults'));
}
</code></pre>
            </td>

            <td data-label="Existing Method (Replace with Connect API)" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e101 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
                static namespace.DRProcessResult processObjects(List&lt;SObject&gt; objectList)</code></pre>
              <p style="margin-bottom:0;">This signature, which doesn't require a DRName, is only for a Data Mapper Load. </p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connect API" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e98 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code><strong>
String jsonString = '';
if (additionalInfo != null) {
  jsonString = JSON.serialize(additionalInfo);
} else {
  jsonString = JSON.serialize(objectList);
}</strong>

List&lt;String&gt; jsonInputData = new List&lt;String&gt;();

jsonInputData.add(jsonString);

ConnectApi.DataMapperExecuteInputRepresentation apexInput = new ConnectApi.DataMapperExecuteInputRepresentation();

apexInput.dataMapperInput = jsonInputData;

apexInput.inputType = 'JSON';

ConnectApi.DataMapperExecuteOptionsRepresentation options = new ConnectApi.DataMapperExecuteOptionsRepresentation();

options.ignoreCache = false;
apexInput.options = options;
<strong>options.shouldSendLegacyResponse = true;</strong>

ConnectApi.DataMapperExecuteOutputRepresentation output = ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput);

List&lt;String&gt; innerResponse = output.response;

for (String currentResponse : innerResponse) {
  Map&lt;String, Object&gt; outerMap = (Map&lt;String, Object&gt;)JSON.deserializeUntyped(currentResponse);
  List&lt;String&gt; keys = new List&lt;String&gt;(outerMap.keySet());
  System.debug(outerMap.get('drSObjectResults'));
}
</code></pre>
            </td>

            <td data-label="Existing Method (Replace with Connect API)" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e101 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
static namespace.DRProcessResult processObjects(List&lt;SObject&gt; objectList,String bundleName,Map&lt;String, Object&gt; additionalInfo, Map&lt;String, Object&gt; filesMap
)
</code></pre>
              <p style="margin-bottom:0;">The additionalInfo is a Map that applies to every SObject, such as
                extra data for processing.</p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connect API" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e98 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code><strong>
String jsonString = '';

if(additionalInfo !=null){
jsonString= JSON.serialize(additionalInfo);

}else{

jsonString= JSON.serialize(objectList);
}</strong>

List&lt;String&gt; jsonInputData = new List&lt;String&gt;();
jsonInputData.add(jsonString);

ConnectApi.DataMapperExecuteInputRepresentation apexInput = new ConnectApi.DataMapperExecuteInputRepresentation();
apexInput.dataMapperInput = jsonInputData;
apexInput.inputType = 'JSON';

ConnectApi.DataMapperExecuteOptionsRepresentation options = new ConnectApi.DataMapperExecuteOptionsRepresentation();<strong>
options.shouldSendLegacyResponse = true;</strong>
apexInput.options = options;

ConnectApi.DataMapperExecuteOutputRepresentation output  = ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput);

List&lt;String&gt; innerResponse = output.response;

for (String currentResponse : innerResponse){
Map&lt;String, Object&gt; outerMap = (Map&lt;String, Object&gt;) JSON.deserializeUntyped(currentResponse);
List&lt;String&gt; keys = new List&lt;String&gt;(outerMap.keySet());
System.debug(outerMap.get('drSObjectResults'));
}</code></pre>
            </td>

            <td data-label="Existing Method (Replace with Connect API)" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e101 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>static namespace.DRProcessResult processObjects(List&lt;SObject&gt; objectList, String bundleName, Map&lt;String, Object&gt; additionalInfo)</code></pre>
              <p style="margin-bottom:0;">The
                additionalInfo is a Map that applies to every SObject, such as extra data for
                processing.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Process a list or map of objects, bypassing sharing rules, with a specified Data Mapper and locale

These methods ignore Sharing Rules, which ensures that the Data Mapper being invoked is private. See [Sharing Rules](https://help.salesforce.com/s/articleView?id=platform.security_about_sharing_rules.htm&type=5&language=en_US) in the Salesforce Help.

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e191">Connect API</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e194">Existing Method (Replace with Connect API)</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Connect API" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e191 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
String jsonString = JSON.serialize(objectList);
List&lt;String&gt; jsonInputData = new List&lt;String&gt;();
jsonInputData.add(jsonString);

ConnectApi.DataMapperExecuteInputRepresentation apexInput = new ConnectApi.DataMapperExecuteInputRepresentation();
apexInput.dataMapperInput = jsonInputData;apexInput.inputType = 'JSON';
ConnectApi.DataMapperExecuteOptionsRepresentation options = new ConnectApi.DataMapperExecuteOptionsRepresentation();
options.locale = locale;
options.shouldSendLegacyResponse = true;
apexInput.options = options;

ConnectApi.DataMapperExecuteOutputRepresentation output  = ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput);
List&lt;String&gt; innerResponse = output.response;

for (String currentResponse : innerResponse){
Map&lt;String, Object&gt; outerMap = (Map&lt;String, Object&gt;) JSON.deserializeUntyped(currentResponse);
List&lt;String&gt; keys = new List&lt;String&gt;(outerMap.keySet());
System.debug(outerMap.get('drSObjectResults'));

}</code></pre>
              <div class="slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium">
                <div class="slds-media slds-media_responsive">
                  <div class="slds-media__figure"><span class="slds-icon_container slds-icon_container_circle slds-icon-note-note"><img style="margin-bottom:0;" src="https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-xcloud-omnistudio-264-0-0-production-enus/f526eaa8-ae05-487a-8944-4bb99b0b78ac/images/icon_note.png" alt="Note"></span></div>
                  <div class="slds-media__body" style="padding-top:.5rem;padding-bottom:.5rem;"><span class="slds-text-title_caps">Note</span> Users must have appropriate permissions to execute the Data Mapper. </div>
                </div>
              </div>
            </td>

            <td data-label="Existing Method (Replace with Connect API)" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e194 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
static namespace.DRProcessResult processFromApex(
List&lt;Map&lt;String, Object&gt;&gt; objectList,
String bundleName,
String locale
)</code></pre>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connect API" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e191 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
String jsonString = JSON.serialize(objectList);

List&lt;String&gt; jsonInputData = new List&lt;String&gt;();
jsonInputData.add(jsonString);

ConnectApi.DataMapperExecuteInputRepresentation apexInput = new ConnectApi.DataMapperExecuteInputRepresentation();
apexInput.dataMapperInput = jsonInputData;
apexInput.inputType = 'JSON';
ConnectApi.DataMapperExecuteOptionsRepresentation options = new ConnectApi.DataMapperExecuteOptionsRepresentation();
options.locale = locale;
options.shouldSendLegacyResponse = true;
apexInput.options = options;
ConnectApi.DataMapperExecuteOutputRepresentation output = ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput);
List&lt;String&gt; innerResponse = output.response;
for (String currentResponse : innerResponse) {
Map&lt;String, Object&gt; outerMap = (Map&lt;String, Object&gt;)JSON.deserializeUntyped(currentResponse);
List&lt;String&gt; keys = new List&lt;String&gt;(outerMap.keySet());
System.debug(outerMap.get('drSObjectResults'));
}</code></pre>
              <div class="slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium">
                <div class="slds-media slds-media_responsive">
                  <div class="slds-media__figure"><span class="slds-icon_container slds-icon_container_circle slds-icon-note-note"><img style="margin-bottom:0;" src="https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-xcloud-omnistudio-264-0-0-production-enus/f526eaa8-ae05-487a-8944-4bb99b0b78ac/images/icon_note.png" alt="Note"></span></div>
                  <div class="slds-media__body" style="padding-top:.5rem;padding-bottom:.5rem;"><span class="slds-text-title_caps">Note</span> Users must have appropriate permissions to execute the Data Mapper. </div>
                </div>
              </div>
            </td>

            <td data-label="Existing Method (Replace with Connect API)" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e194 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
static namespace.DRProcessResult processFromApex(
Map&lt;String, Object&gt; objectList,
String bundleName,
String locale
)</code></pre>
            </td>

          </tr>
        </tbody>
      </table>

## Process a list or map of objects with a specified Data Mapper and locale, considering sharing rules

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e256">Connect API</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e259">Existing Method (Replace with Connect API)</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Connect API" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e256 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
String jsonString = JSON.serialize(objectList);
List&lt;String&gt; jsonInputData = new List&lt;String&gt;();
jsonInputData.add(jsonString);

ConnectApi.DataMapperExecuteInputRepresentation apexInput = new ConnectApi.DataMapperExecuteInputRepresentation();
apexInput.dataMapperInput = jsonInputData;
apexInput.inputType = 'JSON';
<strong>ConnectApi.DataMapperExecuteOptionsRepresentation options = new ConnectApi.DataMapperExecuteOptionsRepresentation();</strong>
<strong>options.locale = locale;</strong>
<strong>options.shouldSendLegacyResponse = true;</strong>
apexInput.options = options;

ConnectApi.DataMapperExecuteOutputRepresentation output = ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput);
List&lt;String&gt; innerResponse = output.response;

for (String currentResponse : innerResponse) {
Map&lt;String, Object&gt; outerMap = (Map&lt;String, Object&gt;)JSON.deserializeUntyped(currentResponse);
List&lt;String&gt; keys = new List&lt;String&gt;(outerMap.keySet());
System.debug(outerMap.get('drSObjectResults'));
}</code></pre>
            </td>

            <td data-label="Existing Method (Replace with Connect API)" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e259 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
static namespace.DRProcessResult process(
List&lt;Map&lt;String, Object&gt;&gt; objectList,
String bundleName,
String locale
)
</code></pre>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connect API" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e256 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
String jsonString = JSON.serialize(objectList);

List&lt;String&gt; jsonInputData = new List&lt;String&gt;();
jsonInputData.add(jsonString);

ConnectApi.DataMapperExecuteInputRepresentation apexInput = new ConnectApi.DataMapperExecuteInputRepresentation();
apexInput.dataMapperInput = jsonInputData;
apexInput.inputType = 'JSON';

ConnectApi.DataMapperExecuteOptionsRepresentation options = new ConnectApi.DataMapperExecuteOptionsRepresentation();
<strong>options.locale = locale;</strong><strong>
options.shouldSendLegacyResponse = true;</strong>
apexInput.options = options;

ConnectApi.DataMapperExecuteOutputRepresentation output = ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput);

List&lt;String&gt; innerResponse = output.response;

for (String currentResponse : innerResponse) {
Map&lt;String, Object&gt; outerMap = (Map&lt;String, Object&gt;)JSON.deserializeUntyped(currentResponse);
List&lt;String&gt; keys = new List&lt;String&gt;(outerMap.keySet());
System.debug(outerMap.get('drSObjectResults'));
}
</code></pre>
            </td>

            <td data-label="Existing Method (Replace with Connect API)" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e259 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
static namespace.DRProcessResult process(
Map&lt;String, Object&gt; objectList,
String bundleName,
String locale
)</code></pre>
            </td>

          </tr>
        </tbody>
      </table>

## Upload data with the bulkupload parameter

This method can only call a Data Mapper Load. No other Apex method can pass the bulkUpload parameter to a Data Mapper. See [Omnistudio Data Mapper Calls From Apex](https://help.salesforce.com/s/articleView?id=xcloud.os_dataraptor_calls_from_apex_47779.htm&type=5&language=en_US).

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e338">Connect API</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e341">Existing Method (Replace with Connect API)</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Connect API" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e338 ">
              <p>Synchronous Processing:</p>
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
List &lt; Account &gt; accounts = new List &lt;Account&gt;();
accounts.add(new Account(Name = 'TesterAccountWithBundleName', vlocity_ins__Active__c='true'));
accounts.add(new Account(Name = 'TesterAccount2WithBundleName', vlocity_ins__Active__c='true'));
accounts.add(new Account(Name = 'TesterAccount3WithBundleName', vlocity_ins__Active__c='true'));
accounts.add(new Account(Name = 'TesterAccount2WithBundleName', vlocity_ins__Active__c='true'));
....
accounts.add(new Account(Name = '<strong>TesterAccount200WithBundleName'</strong>, vlocity_ins__Active__c='true'));

List&lt;String&gt; jsonInputData = new List&lt;String&gt;();
<strong>jsonInputData.add(JSON.serialize(accounts));</strong> 

ConnectApi.DataMapperExecuteInputRepresentation apexInput = new ConnectApi.DataMapperExecuteInputRepresentation();
apexInput.dataMapperInput = jsonInputData;
apexInput.inputType = 'JSON';
ConnectApi.DataMapperExecuteOptionsRepresentation options = new ConnectApi.DataMapperExecuteOptionsRepresentation();
options.ignoreCache = false;
apexInput.options = options;
<strong>options.shouldSendLegacyResponse = true;</strong>
ConnectApi.DataMapperExecuteOutputRepresentation output = ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput);

List&lt;String&gt; innerResponse = output.response;

Map&lt;String, Object&gt; outerMap = (Map&lt;String, Object&gt;) JSON.deserializeUntyped(innerResponse[0]);
List&lt;String&gt; keys = new List&lt;String&gt;(outerMap.keySet());
System.debug(outerMap.get('drSObjectResults'));
</code></pre>
              <p>Here's the
                output:</p>
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>{Account_1=({Id=001xx000003GpXjAAK, Name=TesterAccountWithBundleName, UpsertSObjectType=Account, UpsertSuccess=true}, 
{Id=001xx000003GpXkAAK, Name=TesterAccount2WithBundleName, UpsertSObjectType=Account, UpsertSuccess=true}, 
{Id=001xx000003GpXlAAK, Name=TesterAccount3WithBundleName, UpsertSObjectType=Account, UpsertSuccess=true}, 
{Id=001xx000003GpXmAAK, Name=TesterAccount4WithBundleName, UpsertSObjectType=Account, UpsertSuccess=true} ....... )}</code></pre>
              <p>There
                is a mismatch in the output during the synchronous processing. Perform these steps
                to match the exact output. </p>
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code> 
  Map&lt;String, Object&gt; mapReturn = new Map&lt;String,Object&gt;();
  
  mapReturn.put('createdObjectsByType', createdObjectsByType);
  mapReturn.put('createdObjectsByOrder', createdObjectsByOrder);
  if (overrideErrors != null) {
  mapReturn.put('errors', overrideErrors);
  } else {
  mapReturn.put('errors', errors);
  }
  mapReturn.put('errorsByField', errorsByField);
  mapReturn.put('interfaceInfo', interfaceInfo);
  //if (String.isBlank(responseType) || responseType == 'SObject')
  {
  mapReturn.put('errorsAsJson', errorsAsJson());
  }
  
  mapReturn.put('hasErrors', hasAnyError);
  if (responseCache != null &amp;&amp; String.isNotBlank(responseTypeCache))
  {
  mapReturn.put('returnResultsData', responseCache);
  mapReturn.put('responseType', responseTypeCache);
  }
  else if (responseType != null &amp;&amp; responseType.equalsIgnoreCase('xml'))
  {
  JsonToXml json2xml = new JsonToXml((Map&lt;String, Object&gt;)toJson(), 
  new Map&lt;String, Object&gt; { 
  'fieldWriteOrder' =&gt; xmlOuputSequence, 
  'removeDeclaration' =&gt; xmlRemoveDeclaration 
  });
  mapReturn.put('responseType', 'XML');
  mapReturn.put('returnResultsData', json2xml.getXml());
  }
  else if (responseType != null &amp;&amp; responseType == 'Custom')
  {
  mapReturn.put('responseType', 'Custom');
  mapReturn.put('returnResultsData', processCustomOutputType());
  }     
  else
  {
  mapReturn.put('responseType', 'JSON');
  mapReturn.put('returnResultsData', toJson());
  }
  if (fileAttachmentSyncData.size() &gt; 0)
  {
  mapReturn.put('fileAttachmentSyncData', fileAttachmentSyncData);
  }
  if (Logger.DebugRecordingMode)
  {
  mapReturn.put('debugLog', Logger.recordedDebugStatements);
  mapReturn.put('CpuTime', Limits.getCPUTime());
  mapReturn.put('ActualTime', DateTime.now().getTime() - startForServerTiming);
  }
  return mapReturn;
</code></pre>
            </td>

            <td data-label="Existing Method (Replace with Connect API)" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e341 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>global static Map&lt;String, Object&gt; processPost(Map&lt;String, Object&gt; bodyData)</code></pre>
              <p>Existing approach for synchronous processing</p>
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
String bundleName = 'DRWithLoad'; // Data Mapper name
String bulkUpload = 'false';

Map&lt;String,Object&gt; bodyData = new Map&lt;String,Object&gt;();
bodyData.put('bundleName',bundleName);
bodyData.put('bulkUpload', bulkUpload);
bodyData.put('objectList',objectList);

Map&lt;String,Object&gt; result= vlocity_ins.DRGlobal.processPost(bodyData);

System.debug(result);

Map&lt;String,Object&gt; result= vlocity_ins.DRGlobal.processPost(bodyData);

System.debug(JSON.serialize(result));</code></pre>
            </td>

          </tr>
          <tr class="">
            <td data-label="Connect API" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e338 ">Connect API to asynchronously upload data using the 'bulkupload' parameter is
              not available.</td>

            <td data-label="Existing Method (Replace with Connect API)" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e341 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>
String bundleName = 'DRWithLoad'; // Data Mapper name

String bulkUpload = 'true';

Map&lt;String,Object&gt; bodyData = new Map&lt;String,Object&gt;();
bodyData.put('bundleName',bundleName);
bodyData.put('bulkUpload', bulkUpload);
bodyData.put('objectList',objectList);

Map&lt;String,Object&gt; result= vlocity_ins.DRGlobal.processPost(bodyData);

System.debug(result);</code></pre>
            </td>

          </tr>
        </tbody>
      </table>

## Process an XML String Using a Specified Data Mapper

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e419">Connect API</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d96500e422">Existing Method</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Connect API" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e419 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>List&lt;String&gt; jsonInputData = new List&lt;String&gt;();
jsonInputData.add(objectList);

ConnectApi.DataMapperExecuteInputRepresentation apexInput = new ConnectApi.DataMapperExecuteInputRepresentation();

apexInput.dataMapperInput = jsonInputData;
apexInput.inputType = 'XML';

ConnectApi.DataMapperExecuteOptionsRepresentation options = new ConnectApi.DataMapperExecuteOptionsRepresentation();
options.ignoreCache = false;
options.shouldSendLegacyResponse = true;

apexInput.options = options;

ConnectApi.DataMapperExecuteOutputRepresentation output = ConnectApi.OmniDesignerConnect.executeDataMapper(bundleName, apexInput);

List&lt;String&gt; innerResponse = output.response;
Map&lt;String, Object&gt; outerMap = (Map&lt;String, Object&gt;) JSON.deserializeUntyped(innerResponse[0]);
List&lt;String&gt; keys = new List&lt;String&gt;(outerMap.keySet());
System.debug(outerMap.get('drSObjectResults'));</code></pre>
            </td>

            <td data-label="Existing Method" class="slds-cell-wrap" style="vertical-align:top;" headers="d96500e422 ">
              <pre class="line-numbers slds-box slds-box_x-small slds-theme_shade slds-m-top_medium slds-m-bottom_medium slds-scrollable_x"><code>static namespace.DRProcessResult processString(String input, String bundleName)</code></pre>
            </td>

          </tr>
        </tbody>
      </table>