レポートをカスタマイズするには、適切なカスタムデータが必要です。
[Dialpad Call Log] カスタムオブジェクトを使用して、トレンドや通話詳細を掘り下げて分析することが可能です。Salesforce に通話が記録されると、同システム内で [Dialpad Call Log] レコードが自動的に生成されます。
Note
この設定には、最新の Dialpad for Salesforce パッケージをインストールしてください。
対象ユーザー
この機能は、Dialpad Sell、Dialpad Support ライセンス、Dialpad Connect の Pro、Enterprise プランでご利用いただけます。
[Dialpad Call Log] カスタムオブジェクトを使用する前に、この機能を有効にするためにカスタマーサービスまでご連絡ください。
詳細については以下をご確認ください。
Dialpad Call Log カスタムオブジェクト
[Dialpad Call Log] は、Dialpad パッケージによりインストールされ、Salesforce 内の通話メタデータを取得します。これにより、Salesforce 管理者が設定したコール情報とともに、通話アクティビティレコードが Salesforce に作成されます。

[Dialpad Call Log] オブジェクトを利用すると、Salesforce にコールレポートとダッシュボードが作成され、コンタクトセンターやエージェントの KPI を測定できます。
[Dialpad Call Log] のカスタムオブジェクトは、Salesforce のオブジェクトマネージャーで管理されています。

利用可能なフィールド
Dialpad は、Salesforce でマッピング可能な多様なフィールドを提供しています。
利用可能なフィールドとその定義は以下をご参照ください。
Note
[Call disposition notes] フィールドは使用されなくなるため、削除しても問題ありません。今後このフィールドにデータが入力されることはありません。
フィールド
フィールド | 定義 |
|---|---|
Agent Name | 通話オペレーターの表示名 |
AI Summary | 通話の AI サマリー |
AI Action Items | 通話内で検出されたアクションアイテム |
AI Call Purpose | AI が判定した通話の目的(AI Recap オブジェクトで確認可能) |
AI CSAT | AI による CSAT スコア |
AI Outcome | AI Recap とともに生成された通話の結果 |
AI Playbook adherence | エージェントが AI Playbook にどれほど従ったかを示す数値 |
Account Timezone | アカウントのタイムゾーン |
Call Duration (In Seconds) | 通話の合計時間(秒単位) |
Call End Time | 通話の終了日時 |
Call From | 発信者の電話番号 |
Call Quality Rating | ユーザーが提供した MOS(通話品質)スコア |
Call Recording URL | 通話録音の共有可能なURL |
Call Result | 通話タイプの値 |
Call Start Time | 通話が開始された時刻 |
Call To (First) | ダイヤルされた最初の電話番号 |
Call To | 転送やルーティング後の最終受信者の番号 |
Call Type | 通話の方向(受信、発信など) |
CallId | 通話 ID |
Call Status | 通話の現在のステータスまたは結果 |
Comments | 通話中にエージェントが記入したメモ |
Connected Duration | 通話がオペレーターに接続されていた時間 |
Contact Timezone | 連絡先のタイムゾーン |
CSAT Score | CSAT スコア |
Dialing Duration | 通話が応答されるまでのダイヤル時間 |
Dialpad Agents | 通話に参加した Dialpad エージェント |
Dialpad Call Center | 通話を処理した Dialpad コンタクトセンター |
Due Date | 通話の発生日 |
Hold Duration | 発信者が保留状態にあった時間 |
IsDialpadCallLog | オブジェクトが Dialpad Call Log であることを確認 (常に [true] ) |
isCreatedFromDialpad | 通話が Dialpad から発信されたかどうかを確認 |
isValidatedCall | 2者間で1分以上会話が続いた場合に有効な通話として確認 |
Lead Timezone | リードのタイムゾーン |
Notes | メモを記録するための長文入力欄 |
Object Name | Dialpad 連絡先の名前 |
Opportunity Timezone | 商談のタイムゾーン |
Parent Object Id | 関連する Salesforce インスタンスの ID |
PhoneNumber | Dialpad のターゲット番号 |
Powerdialer Assigned List | 番号が割り当てられているパワーダイアラリストの名前 |
Powerdialer Dialed List | 通話が発信されたパワーダイアラリストの名前 |
Queued Duration | 発信者がキュー内で待機していた時間 |
Related Object Ids | 関連オブジェクトの Salesforce ID(選択されている場合) |
Ringing Duration | 通話が応答されるまでの呼び出し時間 |
Routing Duration | 通話が応答されるまでのルーティング時間 |
Status | 通話ステータス(常に [Complete]) |
Subject | エージェントが入力した件名。ステータスが入力されていない場合はデフォルトのステータスが記録される |
Target Name | 通話ターゲットの名前 |
Task Subtype | 全てのログで [Call] に更新 |
Time of call | 通話の開始日時 |
Total Number of Times Dialed | 番号がダイヤルされた回数の合計 |
Type | 全てのログで [Call] に更新 |
フィールドマッピングの設定
Salesforce 管理者は、Dialpad Call Log オブジェクトとタスクオブジェクトをマッピングすることで、タスクフィールドの通話情報を取得して分析に役立てることができます。
以下手順をご確認ください。
Dialpad Lightning タブを開きます。
[設定管理] > [設定] を開きます。
[Call Activity Field Mapping] を開き、有効な Dialpad Call Log フィールドを確認します。
必要なタスクフィールドを選択して、保存します。

上記の設定を保存した後に発生した発着信通話について、選択したタスクフィールドに通話情報が取得されます。
サンプルレポート
最新の Dialpad パッケージをインストール後、Salesforce の標準ダッシュボードより [Dialpad Dashboards] へアクセスできます。

レポートは [Dialpad Call Log] オブジェクトに対して構築されます。オブジェクトの利用開始後、レポートに反映される仕組みとなります。
フィールドのデータ型
主要なフィールドのデータ型を以下に示します。
アカウントフィールド
フィールド名 | データ型 |
|---|---|
Account Timezone | テキスト(255文字) |
IsCreatedFromDialpad | チェックボックス |
Powerdialer Assigned List | 長文テキストエリア(1000文字) |
Powerdialer Dialed List | 長文テキストエリア(1000文字) |
Powerdialer Last Dialed via | ルックアップ (Dialpad LOAC) |
Total Number of Times Dialed | 数値 (18, 0) |
連絡先フィールド
フィールド名 | データ型 |
Contact Timezone | テキスト(255文字) |
IsCreatedFromDialpad | チェックボックス |
Powerdialer Assigned List | 長文テキストエリア(1000文字) |
Powerdialer Dialed List | 長文テキストエリア(1000文字) |
Powerdialer Last Dialed via | ルックアップ (Dialpad LOAC) |
Total Number of Times Dialed | 数値 (18, 0) |
リードフィールド
フィールド名 | データ型 |
Lead Timezone | テキスト(255文字) |
IsCreatedFromDialpad | チェックボックス |
Powerdialer Assigned List | 長文テキストエリア(1000文字) |
Powerdialer Dialed List | 長文テキストエリア(1000文字) |
Powerdialer Last Dialed via | ルックアップ (Dialpad LOAC) |
Total Number of Times Dialed | 数値 (18, 0) |
商談フィールド
フィールド名 | データ型 |
Opportunity Timezone | テキスト(255文字) |
IsCreatedFromDialpad | チェックボックス |
Powerdialer Assigned List | 長文テキストエリア(1000文字) |
Powerdialer Dialed List | 長文テキストエリア(1000文字) |
Powerdialer Last Dialed via | ルックアップ (Dialpad LOAC) |
Total Number of Times Dialed | 数値 (18, 0) |
タスクおよびアクティビティフィールド
フィールド名 | データ型 |
Call End Time | 日時 |
Call Recording URL | テキスト(255文字) |
Call Start Time | 日時 |
CallId | テキスト (32文字) |
Dialpad Agent | ルックアップ (Dialpad エージェント) |
Dialpad Call Center | ルックアップ (Dialpad コンタクトセンター) |
Dialpad List | ルックアップ (Dialpad リスト) |
IsDialpadCallLog | チェックボックス |
PhoneNumber | テキスト (50文字) |
AI Call Purpose | 長文テキスト(1000文字) |
AI CSAT | 数値 (1-100) |
AI Outcome | 長文テキスト(1000文字) |
AI Playbook Adherence | パーセンテージ |
Note
通話サマリーとアクションアイテム以外の AI フィールドを表示するには、フィールドマッピングで設定する必要があります。マッピングが完了すると、これらのフィールドがタスクに表示されるようになります。ただし、タスクの形式制限により、AI 通話サマリーとアクションアイテムはタスク内に表示されません。
通話タスクは Dialpad ではなく、Salesforce で作成されます。Dialpad はこれらの記録を保存しないため、過去の通話データを遡って入力することはできません。
通話ログフィールド
フィールド名 | データ型 |
Lead Timezone | テキスト(255文字) |
IsCreatedFromDialpad | チェックボックス |
Powerdialer Assigned List | 長文テキストエリア(1000文字) |
Powerdialer Dialed List | 長文テキストエリア(1000文字) |
Powerdialer Last Dialed via | ルックアップ (Dialpad LOAC) |
Total Number of Times Dialed | 数値 (18, 0) |
AI Action Item | リッチテキスト (132, 072) |
AI Call Purpose | 長文テキスト(1000文字) |
AI CSAT(日本未対応) | 数値 (1 - 100) |
AI Outcome | 長文テキスト(1000文字) |
AI Playbook Adherence | パーセンテージ |
AI Summary | リッチテキスト (132, 072) |
Note
6つの Dialpad AI ログ項目は、2024年3月15日より全てのユーザーで利用可能になりました。
2024年3月15日以降に Dialpad for Salesforce を利用開始した場合は、ページレイアウトに [Dialpad AI] という新しいセクションが表示されます。
2024年3月15日以前から利用している場合は、新しいセクションを作成し、AI フィールドを手動で追加する必要があります。
Salesforce の Lightning アプリケーションビルダーから Dialpad AI を検索し、[Dialpad AI] セクションを選択して任意の場所へドラッグ&ドロップし、[保存] を選択します。
タイムゾーンの設定・利用
Dialpad でタイムゾーンを設定する際は、希望する特定のタイムゾーンを選択できます。
2026年8月2日以降、Dialpad では以下のタイムゾーンオプションを提供しています。
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)
GMT-01:00 - Cape Verde, Azores (CVT)
GMT+00:00 - London, Dublin, Lisbon, Reykjavik, Accra (GMT)
GMT+01:00 - Paris, Berlin, Rome, Lagos, Kinshasa (CET)
GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)
GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)
GMT+03:30 - Tehran (IRST)
GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)
GMT+04:30 - Kabul (AFT)
GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)
GMT+05:30 - New Delhi, Mumbai, Colombo (IST)
GMT+05:45 - Kathmandu (NPT)
GMT+06:00 - Dhaka, Almaty, Thimphu (BST)
GMT+06:30 - Yangon, Cocos Islands (MMT)
GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)
GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)
GMT+08:45 - Eucla (ACWST)
GMT+09:00 - Tokyo, Seoul, Pyongyang (JST)
GMT+09:30 - Adelaide, Darwin (ACST)
GMT+10:00 - Sydney, Brisbane, Guam, Port Moresby (AEST)
GMT+10:30 - Lord Howe Island (LHST)
GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)
GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)
GMT+12:45 - Chatham Islands (CHAST)
GMT+13:00 - Phoenix Islands, Tokelau, Tonga, Samoa (PHOT)
GMT+14:00 - Kiritimati/Line Islands (LINT)
重要
2026年8月2日以前よりタイムゾーン機能をご利用いただいている場合は、旧形式から新形式への移行処理を行うため、以下のスクリプトを実行する必要があります。
Salesforce - タイムゾーン更新スクリプト
本スクリプトは、テキストフィールドとして保存されている従来のタイムゾーン値を、新しい選択リストフィールドへマッピングします。
実行にあたっては、Salesforce Developer Console または Workbench を使用します。なお、Salesforce Developer Console における文字数制限に対応するため、スクリプトは2つのパートに分かれています。各パートでそれぞれ一部のタイムゾーン(サブセット)を順次処理します。
スクリプト内には、以下の2つの変数が定義されています。
sObjectName:旧タイムゾーン値を新しい値へマッピングする対象のオブジェクト名に合わせて、変数の値を更新します。recordLimit:1回のトランザクションで処理する最大レコード数を制限します。
処理対象レコードの抽出条件:Dialpad__Timezone__c フィールドが空(NULL)ではなく、かつ Dialpad__Dialpad_Timezone__c フィールドが空(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 ===');
}
// ============================================================
// PART 2
// Execute this salesforce developer console or workbench
// ============================================================
String sObjectName = 'Account'; // e.g. 'Account', 'Contact', 'Lead'
Integer recordLimit = 5000; // 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
// ============================================================
// Creating old value to new value Map - 2nd set
// ============================================================
Map<String, String> tzMap = new Map<String, String>{
'Africa/Blantyre' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Bujumbura' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Cairo' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Gaborone' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Harare' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Johannesburg' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Juba' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Khartoum' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Kigali' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Lubumbashi' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Lusaka' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Maputo' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Maseru' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Mbabane' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Tripoli' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Windhoek' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Asia/Beirut' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Asia/Famagusta' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Asia/Gaza' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Asia/Hebron' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Asia/Jerusalem' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Asia/Nicosia' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Athens' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Bucharest' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Chisinau' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Helsinki' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Kaliningrad' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Kyiv' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Mariehamn' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Riga' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Sofia' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Tallinn' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Uzhgorod' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Vilnius' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Europe/Zaporozhye' => 'GMT+02:00 - Cairo, Johannesburg, Helsinki, Kyiv, Jerusalem (EET)',
'Africa/Addis_Ababa' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Africa/Asmera' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Africa/Dar_es_Salaam' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Africa/Djibouti' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Africa/Kampala' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Africa/Mogadishu' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Africa/Nairobi' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Antarctica/Syowa' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Asia/Aden' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Asia/Amman' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Asia/Baghdad' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Asia/Bahrain' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Asia/Damascus' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Asia/Kuwait' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Asia/Qatar' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Asia/Riyadh' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Europe/Istanbul' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Europe/Kirov' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Europe/Minsk' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Europe/Moscow' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Europe/Simferopol' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Europe/Volgograd' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Indian/Antananarivo' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Indian/Comoro' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Indian/Mayotte' => 'GMT+03:00 - Moscow, Nairobi, Baghdad, Riyadh, Istanbul (MSK)',
'Asia/Tehran' => 'GMT+03:30 - Tehran (IRST)',
'Asia/Baku' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Asia/Dubai' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Asia/Muscat' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Asia/Tbilisi' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Asia/Yerevan' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Europe/Astrakhan' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Europe/Samara' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Europe/Saratov' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Europe/Ulyanovsk' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Indian/Mahe' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Indian/Mauritius' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Indian/Reunion' => 'GMT+04:00 - Dubai, Baku, Tbilisi, Mauritius (GST)',
'Asia/Kabul' => 'GMT+04:30 - Kabul (AFT)',
'Antarctica/Mawson' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Antarctica/Vostok' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Almaty' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Aqtau' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Aqtobe' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Ashgabat' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Atyrau' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Dushanbe' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Karachi' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Oral' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Qostanay' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Qyzylorda' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Samarkand' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Tashkent' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Yekaterinburg' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Indian/Kerguelen' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Indian/Maldives' => 'GMT+05:00 - Karachi, Islamabad, Tashkent, Yekaterinburg (PKT)',
'Asia/Colombo' => 'GMT+05:30 - New Delhi, Mumbai, Colombo (IST)',
'Asia/Kolkata' => 'GMT+05:30 - New Delhi, Mumbai, Colombo (IST)',
'Asia/Kathmandu' => 'GMT+05:45 - Kathmandu (NPT)',
'Asia/Bishkek' => 'GMT+06:00 - Dhaka, Almaty, Thimphu (BST)',
'Asia/Dhaka' => 'GMT+06:00 - Dhaka, Almaty, Thimphu (BST)',
'Asia/Omsk' => 'GMT+06:00 - Dhaka, Almaty, Thimphu (BST)',
'Asia/Thimphu' => 'GMT+06:00 - Dhaka, Almaty, Thimphu (BST)',
'Asia/Urumqi' => 'GMT+06:00 - Dhaka, Almaty, Thimphu (BST)',
'Indian/Chagos' => 'GMT+06:00 - Dhaka, Almaty, Thimphu (BST)',
'Asia/Rangoon' => 'GMT+06:30 - Yangon, Cocos Islands (MMT)',
'Indian/Cocos' => 'GMT+06:30 - Yangon, Cocos Islands (MMT)',
'Antarctica/Davis' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Bangkok' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Barnaul' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Ho_Chi_Minh' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Hovd' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Jakarta' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Krasnoyarsk' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Novokuznetsk' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Novosibirsk' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Phnom_Penh' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Pontianak' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Tomsk' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Asia/Vientiane' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Indian/Christmas' => 'GMT+07:00 - Bangkok, Jakarta, Hanoi, Ho Chi Minh City (ICT)',
'Antarctica/Casey' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Brunei' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Choibalsan' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Hong_Kong' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Irkutsk' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Kuala_Lumpur' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Kuching' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Macau' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Makassar' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Manila' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Shanghai' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Singapore' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Taipei' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Asia/Ulaanbaatar' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Australia/Perth' => 'GMT+08:00 - Beijing, Singapore, Hong Kong, Perth, Taipei (CST)',
'Australia/Eucla' => 'GMT+08:45 - Eucla (ACWST)',
'Asia/Chita' => 'GMT+09:00 - Tokyo, Seoul, Pyongyang (JST)',
'Asia/Dili' => 'GMT+09:00 - Tokyo, Seoul, Pyongyang (JST)',
'Asia/Jayapura' => 'GMT+09:00 - Tokyo, Seoul, Pyongyang (JST)',
'Asia/Khandyga' => 'GMT+09:00 - Tokyo, Seoul, Pyongyang (JST)',
'Asia/Pyongyang' => 'GMT+09:00 - Tokyo, Seoul, Pyongyang (JST)',
'Asia/Seoul' => 'GMT+09:00 - Tokyo, Seoul, Pyongyang (JST)',
'Asia/Tokyo' => 'GMT+09:00 - Tokyo, Seoul, Pyongyang (JST)',
'Asia/Yakutsk' => 'GMT+09:00 - Tokyo, Seoul, Pyongyang (JST)',
'Pacific/Palau' => 'GMT+09:00 - Tokyo, Seoul, Pyongyang (JST)',
'Australia/Darwin' => 'GMT+09:30 - Adelaide, Darwin (ACST)',
'Antarctica/DumontDUrville' => 'GMT+10:00 - Sydney, Brisbane, Guam, Port Moresby (AEST)',
'Asia/Ust-Nera' => 'GMT+10:00 - Sydney, Brisbane, Guam, Port Moresby (AEST)',
'Asia/Vladivostok' => 'GMT+10:00 - Sydney, Brisbane, Guam, Port Moresby (AEST)',
'Australia/Brisbane' => 'GMT+10:00 - Sydney, Brisbane, Guam, Port Moresby (AEST)',
'Australia/Lindeman' => 'GMT+10:00 - Sydney, Brisbane, Guam, Port Moresby (AEST)',
'Pacific/Guam' => 'GMT+10:00 - Sydney, Brisbane, Guam, Port Moresby (AEST)',
'Pacific/Port_Moresby' => 'GMT+10:00 - Sydney, Brisbane, Guam, Port Moresby (AEST)',
'Pacific/Saipan' => 'GMT+10:00 - Sydney, Brisbane, Guam, Port Moresby (AEST)',
'Pacific/Truk' => 'GMT+10:00 - Sydney, Brisbane, Guam, Port Moresby (AEST)',
'Australia/Adelaide' => 'GMT+10:30 - Lord Howe Island (LHST)',
'Australia/Broken_Hill' => 'GMT+10:30 - Lord Howe Island (LHST)',
'Antarctica/Macquarie' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Asia/Magadan' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Asia/Sakhalin' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Asia/Srednekolymsk' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Australia/Currie' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Australia/Hobart' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Australia/Lord_Howe' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Australia/Melbourne' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Australia/Sydney' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Pacific/Bougainville' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Pacific/Efate' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Pacific/Guadalcanal' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Pacific/Kosrae' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Pacific/Noumea' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Pacific/Ponape' => 'GMT+11:00 - Solomon Islands, Vanuatu, Magadan (SBT)',
'Asia/Anadyr' => 'GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)',
'Asia/Kamchatka' => 'GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)',
'Pacific/Fiji' => 'GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)',
'Pacific/Funafuti' => 'GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)',
'Pacific/Kwajalein' => 'GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)',
'Pacific/Majuro' => 'GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)',
'Pacific/Nauru' => 'GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)',
'Pacific/Norfolk' => 'GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)',
'Pacific/Tarawa' => 'GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)',
'Pacific/Wake' => 'GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)',
'Pacific/Wallis' => 'GMT+12:00 - Auckland, Fiji, Kamchatka (NZST)',
'Pacific/Chatham' => 'GMT+12:45 - Chatham Islands (CHAST)',
'Antarctica/McMurdo' => 'GMT+13:00 - Phoenix Islands, Tokelau, Tonga, Samoa (PHOT)',
'Pacific/Apia' => 'GMT+13:00 - Phoenix Islands, Tokelau, Tonga, Samoa (PHOT)',
'Pacific/Auckland' => 'GMT+13:00 - Phoenix Islands, Tokelau, Tonga, Samoa (PHOT)',
'Pacific/Enderbury' => 'GMT+13:00 - Phoenix Islands, Tokelau, Tonga, Samoa (PHOT)',
'Pacific/Fakaofo' => 'GMT+13:00 - Phoenix Islands, Tokelau, Tonga, Samoa (PHOT)',
'Pacific/Tongatapu' => 'GMT+13:00 - Phoenix Islands, Tokelau, Tonga, Samoa (PHOT)',
'Pacific/Kiritimati' => 'GMT+14:00 - Kiritimati/Line Islands (LINT)'
};
// ============================================================
// QUERY & UPDATE
// ============================================================
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 2 COMPLETE === Updated: ' + successCount + ' | Failed: ' + failCount);
} else {
System.debug('=== PART 2: NO RECORDS TO UPDATE ===');
}