Skip to main content

Salesforce : Debug Log untuk user System Terkait Email-to-Case

Belum lama ini ada proyek cukup intensif berkaitan dengan Case Management di platform Salesforce.com. Salesforce sendiri sudah memiliki fitur ini, yang masuk dalam produk Service Cloud, dan cukup banyak fasilitas yang tersedia. Salah satunya adalah Email-to-case, yang memungkinkan kita menerima keluhan/saran melalui email, dan secara otomatis system akan membuat record di object Case (standard object).

Aku membuat trigger untuk object Case, yang akan mengupdate field tertentu berdasar data yang diinput. Ternyata, trigger yang aku buat tidak berfungsi dengan baik jika record Case dibuat dari Email-to-case. Padahal kalau dibuat secara manual (data entry), atau dibuat dari fitur Web-to-case, triggernya bisa berfungsi dengan baik. 

Nah, aku coba debug, gak muncul di Debug Log. Ternyata yang user yang menjalankan peran saat proses Email-to-case adalah user "System", bukan user yang aku pakai. Pantas saja debug log gak ada isinya, karena bukan userku yang melakukannya. Pengaturan tentang siapa yang berperan dalam Email-to-case ini bisa dilakukan di menu:

Setup > Services > Support Settings, bagian "Automated Case User".

Masalahnya, untuk membuat Debug Log user System, tidak bisa dilakukan langsung lewat menu Debug Log, karena dianggap user tidak dikenali. 

Setelah browsing sebentar, nemu solusi di sini:
https://help.salesforce.com/articleView?id=000333602&type=1&mode=1

Di situ dianjurkan untuk memakai Workbench, terus masuk ke menu Utilities > REST Explorer.

PIlih metode POST, gunakan URL berikut

/services/data/v35.0/tooling/sobjects/TraceFlag/

Selanjutnya gunakan contoh di bawah ini sebagai body:

{ 
 "TracedEntityId" : "0050p000002Qr3OAAS", 
 "ExpirationDate" : "2021-04-21T13:04:31.000+0000", 
 "DebugLevelId" : "7dl2w000000Hp0eAAC", 
 "LogType" : "USER_DEBUG", 
 "StartDate" : "2021-04-21T03:34:31.000+0000" 
 }

Sebelum execute, sesuaikan data dari contoh tersebut:
- TraceEntityId : ID dari user System (SELECT Id FROM User WHERE Name = 'System')
- DebugLevelId : ID dari DebugLevel (SELECT Id, DeveloperName FROM DebugLevel)

Setelah di-execute dan sukses, cek di Debug Log, seharusnya ada pilihan debug log untuk user tersebut sudah aktif.

Note: untuk query DebugLevelId, gunakan Developer Console dengan mengaktifkan Tooling API.
Oh ya, format tanggal adalah dalam GMT, jadi jam-nya harus disesuiakan dengan jam yang diiinginkan di timezone kita.
Sebagai contoh, untuk jam WIB, gunakan waktu 7 jam lebih awal.

Happy debugging!

Comments

Popular posts from this blog

PostGreSQL :: Hitung Umur

Ternyata untuk menghitung umur dari data yang disimpan di PostGreSQL sangat gampang. PostGreSQL sendiri sudah menyediakan fungsi yang mendukung. Beberapa fungsi yang bisa dipakai adalah AGE dan EXTRACT. AGE dipakai untuk menghitung umur dari sebuah data, dibandingkan dengan hari ini, atau dengan data lain (tipenya timestamp). Misal: age(timestamp '1980-09-27'), akan menghasilkan nilai (bertipe interval) "24 years 1 mon 25 days". Nah, kalau mau mengambil nilai tahunnya saja, tinggal menggunakan EXTRACT Contoh: EXTRACT(year FROM AGE(timestamp '2001-09-27')), hasilnya akan jadi 24.

PHP :: Selisih Jam

Setelah kemarin kesulitan untuk melakukan increment ataupun decrement terhadap variabel waktu (date/time) di PHP, kali ini nemuin masalah untuk mencari selisih waktu (dari satu jam ke jam tertentu), yang perlu untuk ngitung lembur karyawan. Tadinya kepikiran untuk buat fungsi sendiri, yang flow -nya kira-kira begini: - masing-masing dipisah menjadi jam, menit, detik - bandingkan antara keduanya. - lakukan pengurangan terhadap masing-masing komponen (jam, menit dan detik) - gabungkan hasil perhitungan ... (selisih jam + selisih menit + selisih detik) Tapi waktu aku ingat kasus Next Date, ... muncul ide untuk menggunakan cara yang sama, yaitu memanfaatkan format UNIX timestamp, terus nyoba mencari selisihnya. TERNYATA BERHASIL !!! Flownya seperti ini: - masing-masing dipisah menjadi jam, menit,detik - ubah masing-masing ke format timestamp, gunakan fungsi mktime() - kurangkan kedua jam - hasilnya dibagi 60 (karena satuannya pakai menit), sementara selisih timestamp itu dalam detik Algori

Delphi :: Split String

Akhirnya ketemu juga cara untuk melakukan split string. (Terbiasa pakai PHP sih, yang sangat memanjakan dalam pengelolaan string.) Di sini memanfaatkan TStringList, unit Classes. // procedure untuk split string procedure Split (const Delimiter: Char; // delimiter charachter Input: string; // input string const Strings: TStrings) ; // list of string result begin Assert(Assigned(Strings)) ; Strings.Clear; Strings.Delimiter := Delimiter; Strings.DelimitedText := Input; end; // contoh pemakaian procedure TForm1.Button1Click(Sender: TObject) ; var A: TStringList; begin A := TStringList.Create; try Split(' ', 'your delphi guide', A) ; ShowMessage(a[0]) ; //your ShowMessage(a[1]) ; //delphi ShowMessage(a[2]) ; //guide finally A.Free; end; end; Source : http://delphi.about.com/cs/adptips2002/a/bltip1102_5.htm Wheew .. akhirnya. One step ahead!!