Customized reports require customized data. Use Dialpad Call LogCustom Object to discover trends and examine the details of your calls.
Every Dialpad call eligible to be logged in a connected Salesforce instance creates a Dialpad Call Logrecord in Salesforce.
Who can use this
This is available to eligible Dialpad Sell, Dialpad Support, and Dialpad Connect users. Refer to our Pricing Page to see if you have access to this feature.
Before you can use a Dialpad Call Log Custom Object, you must contact our Customer Care Team to enable the feature.
To configure field mapping for Dialpad call activities, you must install the latest version of the Dialpad for Salesforce package in Salesforce.
Let's dive into the details.
Dialpad Call Log Custom Object
The Dialpad Call Log is a Custom Object in the Dialpad managed package that captures Dialpad call details and notes them in Salesforce.
Using the chosen Dialpad call information, this Custom Object creates a Call Activity Record (Task Activity) in Salesforce.
Use Dialpad Call Log objects to create call reports and dashboards in Salesforce and measure KPIs specific to your contact centers and agents.
The Dialpad Custom Call Log Object is managed in your Salesforce Object Manager.
Available fields
Dialpad offers a wide variety of fields that can be mapped in Salesforce.
Find our available fields and their definitions listed below.
Note
You can delete the Call Disposition Notes field, as it is no longer in use and won’t be populated.
Call Recording URL: The call recording's shareable URL.
Call Result: The call disposition value.
Call Start Time: The time when the call started.
Call To (First): The number that was dialed.
Call To: The number of the final recipient after any transfers or routing.
Call Type: The call direction (inbound, outbound etc).
CallId: Unique call ID
Call Status: The current state or outcome of the call (it is a picklist field).
Comments: Notes written by the agent during the call.
Connected Duration: The length of time the call was connected to an operator.
Contact Timezone: The timezone of the contact.
CSAT Score: The CSAT score.
Dialing Duration: The length of time spent dialing before the call was answered.
Dialpad Agents: Dialpad Agents who participated in the call.
Dialpad Call Center: The Dialpad Contact Center that handled the call.
Due Date: Call activity date (the day the call occured).
Hold Duration: The amount of time the caller was on hold.
IsDialpadCallLog: Confirms the object is a Dialpad Call Log (this will always be true).
isCreatedFromDialpad: Confirms if the call was created from Dialpad.
isValidatedCall: Confirms if the call was connected between two parties where both spoke for longer than 1 minute (ie a valid conversation).
Lead Timezone: Timezone of the lead.
Notes: A Long Text Area to log notes.
Object Name: Name of the Dialpad contact.
Opportunity Timezone: Timezone of the Opportunity.
Parent Object Id: ID of the connected Salesforce instance.
PhoneNumber: Dialpad target number.
Powerdialer Assigned List: The name of the Powerdialer List that the number is assigned to.
Powerdialer Dialed List: The name of the Powerdialer List that the call was dialed from.
Queued Duration: Amount of time the caller spent in a queue.
Related Object Ids: The Salesforce ID of the related object (if selected).
Ringing Duration: The time spent in a ringing state (before the call was answered).
Routing Duration: The time spent in transit (routing) before being answered.
Status: The status of the Salesforce task (this will always be listed as Complete).
Subject: The subject listed by the agent. If no status was provided, the default status will be listed.
Target Name: The name of the call's target.
Task Subtype: The value 'Call' will be updated for every log.
Time of call: The call's start date.
Total Number of Times Dialed: The total number of times the number was dialed.
Type: The value 'Call' will be updated for every log.
Configuring field mapping
Salesforce Admins can map fields from the Dialpad call log object to a Task object, ensuring that the call information captured makes the most sense for your organization.
Let's take a look at how to configure field mapping.
Go to your Dialpad Lightning tab
Select Setup Manager
Select Settings
Expand Call Activity Field Mapping
Select the desired Task fields
Select Save
Once you've saved your preferences, all proceeding calls will capture the call information detailed in your selected Task fields.
Dialpad SMS Log Custom Object
The Dialpad SMS Log is a Custom Object in the Dialpad managed package that captures Dialpad SMS details and notes them in Salesforce.
Using the chosen Dialpad SMS information, this Custom Object creates a Dialpad SMS Log in Salesforce.
This object is created only when ‘Log SMS messages as activities’ setting is checked.
Available fields
Dialpad offers a wide variety of fields that can be mapped in Salesforce.
Find our available fields and their definitions listed below.
Fields
Activity Date
Agent Name
Department
Group Id
Media
Message Details
Message Status
Message Subtype
Message Direction
Object Name
Parent Object Id
RelatedObjectIds
Subject
Type
Media File
Salesforce Task
Configuring field mapping
Salesforce Admins can map fields from the Dialpad SMS Log Custom Object to a Task object, ensuring that the SMS information captured makes the most sense for your organization.
Let's take a look at how to configure field mapping.
Go to your Dialpad Lightning tab
Select Setup Manager
Select Settings
Expand SMS Activity Field Mapping
Select the desired Task fields
Select Save
Once you've saved your preferences, all proceeding SMS messages will capture the SMS information detailed in your selected Task fields.
Sample reports
Use sample reports to get an idea of what can be exported.
Access your sample reports from your Dialpad Dashboards.
Remember, these reports are built on top of the Dialpad Call Log object, so you will only see data if you start using the newly released updates.
Field data types
Let's go over the data types for our most used fields.
Account fields
Field Name
Data Type
Account Timezone
Text (255 characters)
IsCreatedFromDialpad
Checkbox
Powerdialer Assigned List
Long Text Area (1000 characters)
Powerdialer Dialed List
Long Text Area (1000 characters)
Powerdialer Last Dialed via
Lookup (Dialpad LOAC)
Total Number of Times Dialed
Number (18, 0)
Contact fields
Field Name
Data Type
Contact Timezone
Text (255 characters)
IsCreatedFromDialpad
Checkbox
Powerdialer Assigned List
Long Text Area (1000 characters)
Powerdialer Dialed List
Long Text Area (1000 characters)
Powerdialer Last Dialed via
Lookup (Dialpad LOAC)
Total Number of Times Dialed
Number (18, 0)
Lead fields
Field Name
Data Type
Lead Timezone
Text (255 characters)
IsCreatedFromDialpad
Checkbox
Powerdialer Assigned List
Long Text Area (1000 characters)
Powerdialer Dialed List
Long Text Area (1000 characters)
Powerdialer Last Dialed via
Lookup (Dialpad LOAC)
Total Number of Times Dialed
Number (18, 0)
Opportunity fields
Field Name
Data Type
Opportunity Timezone
Text (255 characters)
IsCreatedFromDialpad
Checkbox
Powerdialer Assigned List
Long Text Area (1000 characters)
Powerdialer Dialed List
Long Text Area (1000 characters)
Powerdialer Last Dialed via
Lookup (Dialpad LOAC)
Total Number of Times Dialed
Number (18, 0)
Task and Activity fields
Field Name
Data Type
Call End Time
Date/Time
Call Recording URL
Text (255 characters)
Call Start Time
Date/Time
CallId
Text (32 characters)
Dialpad Agent
Lookup (Dialpad Agents)
Dialpad Call Center
Lookup (Dialpad Call Center)
Dialpad List
Lookup (Dialpad List)
IsDialpadCallLog
Checkbox
PhoneNumber
Text (50 characters)
AI Call Purpose
Long Text (1000 characters)
AI CSAT
Number (1-100)
AI Outcome
Long Text (1000 characters)
AI Playbook Adherence
Percentage
Notes
To see the Dialpad AI fields (except for AI Summary and AI Action Items), you'll need to configure them in your field mapping. Once mapped, you'll see these fields noted on the call task.
Due to Task formatting restrictions, AI Summary and AI Action Items cannot be displayed in a Task.
Call Tasks are created in Salesforce, not Dialpad. As Dialpad does not store these records, we cannot backfill previous calls.
Call log fields
Field Name
Data Type
Lead Timezone
Text (255 characters)
IsCreatedFromDialpad
Checkbox
Powerdialer Assigned List
Long Text Area (1000 characters)
Powerdialer Dialed List
Long Text Area (1000 characters)
Powerdialer Last Dialed via
Lookup (Dialpad LOAC)
Total Number of Times Dialed
Number (18, 0)
AI Action Item
Rich Text (132, 072)
AI Call Purpose
Long Text (1000 characters)
AI CSAT
Number (1 - 100)
AI Outcome
Long Text (1000 characters)
AI Playbook Adherence
Percentage
AI Summary
Rich Text (132, 072)
Note
The 6 Dialpad AI Call Log fields became available to all users on March 15, 2024. If you started using Dialpad for Salesforce after March 15, 2024, you will see a new section called Dialpad AI on the page layout.
If you started using Dialpad for Salesforce before March 15, 2024, you'll need to create a new section and add the AI fields manually. From your Salesforce Lightning App Builder, search for Dialpad AI. Select Dialpad AI, drag and drop it into the desired position, then select Save.
Using Timezones
When using Timezones, you must select a specific timezone.
As of August 2, 2026, Dialpad offers the following timezone options:
GMT-12:00 - Baker Island, Howland Island (AoE)
GMT-11:00 - American Samoa, Niue (SST)
GMT-10:00 - Hawaii, Tahiti, Cook Islands (HST)
GMT-09:30 - Marquesas Islands (MART)
GMT-09:00 - Alaska, Gambier Islands (AKST)
GMT-08:00 - Los Angeles, Vancouver, Tijuana (PST)
GMT-07:00 - Denver, Phoenix, Calgary (MST)
GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)
GMT-05:00 - New York, Toronto, Lima, Bogota (EST)
GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)
GMT-03:30 - St. John’s (NST)
GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)
GMT-02:00 - Fernando de Noronha, South Georgia (FNT)
If you were using timezones before August 2nd, 2026, you must run the script below to migrate the old timezone format to the new one.
Salesforce - Timezone update script
This script maps the old timezone value, which was a text field, to the new picklist field.
The script must be executed in the Salesforce Developer Console or Workbench. Due to Salesforce's character limit in the Developer Console, we have divided the script into two parts, with each part processing a subset of timezones.
In the script, we have provided the 2 variable sObjectName and recordLimit
sObjectName: Updates the variable to object name, where they have to map the old timezone value to the new value
recordLimit : Limits the number of records that can be processed in a transaction.
When retrieving records for processing, we must ensure that the Dialpad__Timezon__c field is not empty (NULL), and the Dialpad__Dialpad_Timezone__c field is empty (NULL).
// ============================================================
// PART 1 of 2
// Run Part 1 first, then run Part 2.
// ============================================================
String sObjectName = 'Account'; // e.g. 'Account', 'Contact', 'Lead'
Integer recordLimit = 200; // Max limit 10000, Update as per org configuration
String sourceField = 'Dialpad__Timezone__c'; // Old Text Field API
String targetField = 'Dialpad__Dialpad_Timezone__c'; // New Picklist Field API
Map<String, String> tzMap = new Map<String, String>{
'Pacific/Midway' => 'GMT-11:00 - American Samoa, Niue (SST)',
'Pacific/Niue' => 'GMT-11:00 - American Samoa, Niue (SST)',
'Pacific/Pago_Pago' => 'GMT-11:00 - American Samoa, Niue (SST)',
'America/Adak' => 'GMT-10:00 - Hawaii, Tahiti, Cook Islands (HST)',
'Pacific/Honolulu' => 'GMT-10:00 - Hawaii, Tahiti, Cook Islands (HST)',
'Pacific/Johnston' => 'GMT-10:00 - Hawaii, Tahiti, Cook Islands (HST)',
'Pacific/Rarotonga' => 'GMT-10:00 - Hawaii, Tahiti, Cook Islands (HST)',
'Pacific/Tahiti' => 'GMT-10:00 - Hawaii, Tahiti, Cook Islands (HST)',
'Pacific/Marquesas' => 'GMT-09:30 - Marquesas Islands (MART)',
'America/Anchorage' => 'GMT-09:00 - Alaska, Gambier Islands (AKST)',
'America/Juneau' => 'GMT-09:00 - Alaska, Gambier Islands (AKST)',
'America/Metlakatla' => 'GMT-09:00 - Alaska, Gambier Islands (AKST)',
'America/Nome' => 'GMT-09:00 - Alaska, Gambier Islands (AKST)',
'America/Sitka' => 'GMT-09:00 - Alaska, Gambier Islands (AKST)',
'America/Yakutat' => 'GMT-09:00 - Alaska, Gambier Islands (AKST)',
'Pacific/Gambier' => 'GMT-09:00 - Alaska, Gambier Islands (AKST)',
'America/Los_Angeles' => 'GMT-08:00 - Los Angeles, Vancouver, Tijuana (PST)',
'America/Santa_Isabel' => 'GMT-08:00 - Los Angeles, Vancouver, Tijuana (PST)',
'America/Tijuana' => 'GMT-08:00 - Los Angeles, Vancouver, Tijuana (PST)',
'America/Vancouver' => 'GMT-08:00 - Los Angeles, Vancouver, Tijuana (PST)',
'Pacific/Pitcairn' => 'GMT-08:00 - Los Angeles, Vancouver, Tijuana (PST)',
'America/Boise' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Cambridge_Bay' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Creston' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Dawson' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Dawson_Creek' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Denver' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Edmonton' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Fort_Nelson' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Hermosillo' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Inuvik' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Mazatlan' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Phoenix' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Whitehorse' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Yellowknife' => 'GMT-07:00 - Denver, Phoenix, Calgary (MST)',
'America/Bahia_Banderas' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Belize' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Chicago' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Chihuahua' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Costa_Rica' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/El_Salvador' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Guatemala' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Indiana/Knox' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Indiana/Tell_City' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Managua' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Matamoros' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Menominee' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Merida' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Mexico_City' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Monterrey' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/North_Dakota/Beulah' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/North_Dakota/Center' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/North_Dakota/New_Salem' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Ojinaga' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Rainy_River' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Rankin_Inlet' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Regina' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Resolute' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Swift_Current' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Tegucigalpa' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Winnipeg' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'Pacific/Galapagos' => 'GMT-06:00 - Chicago, Mexico City, Costa Rica, Galapagos (CST)',
'America/Bogota' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Cancun' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Cayman' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Coral_Harbour' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Detroit' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Eirunepe' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Grand_Turk' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Guayaquil' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Havana' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Indiana/Indianapolis' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Indiana/Marengo' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Indiana/Petersburg' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Indiana/Vevay' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Indiana/Vincennes' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Indiana/Winamac' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Iqaluit' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Jamaica' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Kentucky/Monticello' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Lima' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Louisville' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Montreal' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Nassau' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/New_York' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Nipigon' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Panama' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Pangnirtung' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Port-au-Prince' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Rio_Branco' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Thunder_Bay' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Toronto' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'Pacific/Easter' => 'GMT-05:00 - New York, Toronto, Lima, Bogota (EST)',
'America/Anguilla' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Antigua' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Aruba' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Barbados' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Blanc-Sablon' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Boa_Vista' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Campo_Grande' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Caracas' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Cuiaba' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Curacao' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Dominica' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Glace_Bay' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Goose_Bay' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Grenada' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Guadeloupe' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Guyana' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Halifax' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Kralendijk' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/La_Paz' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Lower_Princes' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Manaus' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Marigot' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Martinique' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Moncton' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Montserrat' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Port_of_Spain' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Porto_Velho' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Puerto_Rico' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Santo_Domingo' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/St_Barthelemy' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/St_Kitts' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/St_Lucia' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/St_Thomas' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/St_Vincent' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Thule' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/Tortola' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'Atlantic/Bermuda' => 'GMT-04:00 - Halifax, Santiago, Caracas, La Paz (AST)',
'America/St_Johns' => 'GMT-03:30 - St. John\'s (NST)',
'America/Araguaina' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Argentina/Buenos_Aires' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Argentina/La_Rioja' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Argentina/Rio_Gallegos' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Argentina/Salta' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Argentina/San_Juan' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Argentina/San_Luis' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Argentina/Tucuman' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Argentina/Ushuaia' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Asuncion' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Bahia' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Belem' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Catamarca' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Cayenne' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Cordoba' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Fortaleza' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Jujuy' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Maceio' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Mendoza' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Miquelon' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Montevideo' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Paramaribo' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Punta_Arenas' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Recife' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Santarem' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Santiago' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Sao_Paulo' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'Antarctica/Palmer' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'Antarctica/Rothera' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'Atlantic/Stanley' => 'GMT-03:00 - São Paulo, Buenos Aires, Montevideo (BRT)',
'America/Godthab' => 'GMT-02:00 - Fernando de Noronha, South Georgia (FNT)',
'America/Noronha' => 'GMT-02:00 - Fernando de Noronha, South Georgia (FNT)',
'America/Scoresbysund' => 'GMT-02:00 - Fernando de Noronha, South Georgia (FNT)',
'Atlantic/South_Georgia' => 'GMT-02:00 - Fernando de Noronha, South Georgia (FNT)',
'Atlantic/Azores' => 'GMT-01:00 - Cape Verde, Azores (CVT)',
'Atlantic/Cape_Verde' => 'GMT-01:00 - Cape Verde, Azores (CVT)',
'Africa/Abidjan' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Accra' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Bamako' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Banjul' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Bissau' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Casablanca' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Conakry' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Dakar' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/El_Aaiun' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Freetown' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Lome' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Monrovia' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Nouakchott' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Ouagadougou' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Sao_Tome' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'America/Danmarkshavn' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Antarctica/Troll' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Atlantic/Canary' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Atlantic/Faeroe' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Atlantic/Madeira' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Atlantic/Reykjavik' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Atlantic/St_Helena' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Europe/Dublin' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Europe/Guernsey' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Europe/Isle_of_Man' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Europe/Jersey' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Europe/Lisbon' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Europe/London' => 'GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)',
'Africa/Algiers' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Bangui' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Brazzaville' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Ceuta' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Douala' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Kinshasa' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Lagos' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Libreville' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Luanda' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Malabo' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Ndjamena' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Niamey' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Porto-Novo' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Africa/Tunis' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Arctic/Longyearbyen' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Amsterdam' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Andorra' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Belgrade' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Berlin' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Bratislava' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Brussels' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Budapest' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Busingen' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Copenhagen' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Gibraltar' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Ljubljana' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Luxembourg' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Madrid' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Malta' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Monaco' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Oslo' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Paris' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Podgorica' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Prague' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Rome' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/San_Marino' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Sarajevo' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Skopje' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Stockholm' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Tirane' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Vaduz' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Vatican' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Vienna' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Warsaw' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Zagreb' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)',
'Europe/Zurich' => 'GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)'
};
String query = 'SELECT Id, ' + sourceField + ', ' + targetField
+ ' FROM ' + sObjectName
+ ' WHERE ' + sourceField + ' != NULL'
+ ' AND ' + targetField + ' = NULL'
+ ' LIMIT ' + recordLimit;
List<SObject> records = Database.query(query);
List<SObject> toUpdate = new List<SObject>();
Integer matchCount = 0;
for (SObject rec : records) {
String sfTz = (String) rec.get(sourceField);
if (String.isNotBlank(sfTz) && tzMap.containsKey(sfTz)) {
rec.put(targetField, tzMap.get(sfTz));
toUpdate.add(rec);
matchCount++;
}
}
if (!toUpdate.isEmpty()) {
Database.SaveResult[] results = Database.update(toUpdate, false);
Integer successCount = 0, failCount = 0;
for (Database.SaveResult sr : results) {
if (sr.isSuccess()) { successCount++; }
else {
failCount++;
for (Database.Error e : sr.getErrors())
System.debug('Update failed: ' + sr.getId() + ' | ' + e.getMessage());
}
}
System.debug('=== PART 1 COMPLETE === Updated: ' + successCount + ' | Failed: ' + failCount);
} else {
System.debug('=== PART 1: No matching records to update ===');
}
Comments
Article is closed for comments.