120 Salesforce Technical Support Engineer Interview Questions & Answers 2026 | Real MNC Questions
🔧 Salesforce Interview 2026
120 Salesforce Technical Support Engineer Interview Questions & Answers
Real questions asked at Salesforce, TCS, Cognizant, Infosys, Wipro — debugging, governor limits, security, integration, Service Cloud, deployment & real scenarios.
120
Questions
8
Sections
Real
Interview Asked
100%
Free
🔧 Support Engineer
🎯 Scenario Based
120 Questions · 8 Sections · 2026
🔍
Section 1: Debugging & Debug Logs
Every support interview starts here
Q1–Q15
1
Q01 · Debug Logs
What is a Debug Log in Salesforce and how do you set it up?
✅ Answer
A Debug Log captures Apex code, SOQL queries, DML, governor limits, and errors for a specific user. Setup → Debug Logs → New. Set log levels per category.
- 📍Path: Setup → Quick Find: “Debug Logs” → New → select User → set expiry
- 💡Log levels: NONE → ERROR → WARN → INFO → DEBUG → FINE → FINER → FINEST
- 💡Categories: Apex Code, Database, Workflow, Callout — set each independently
- 🔥Limits: 20MB max per log, 50 logs retained. Delete old logs to free space.
🎤 One-Line Answer
"Debug logs capture Apex, SOQL, DML, governor limits. Setup → Debug Logs → New. FINEST for max detail. Developer Console filters logs by event type."
2
Q02 · Debug Logs
How do you read a Debug Log to find an error? Walk me through the process.
✅ Answer
Open Developer Console → Logs tab → open log → filter for
EXCEPTION_THROWN or FATAL_ERROR → read stack trace for exact class, method, and line number.- 1Developer Console → Logs tab → double-click log to open
- 2Filter box: type
EXCEPTION_THROWN— shows exact error + line number - 3Filter:
FATAL_ERROR— unhandled exceptions that rolled back transaction - 4Bottom of log:
LIMIT_USAGE_FOR_NS— shows all governor limits consumed - 5Stack trace: exact class → method → line number → error message
🎤 One-Line Answer
"Filter EXCEPTION_THROWN for exact error + line. LIMIT_USAGE_FOR_NS shows governor limit usage. Stack trace reveals which class and method threw it."
3
Q03 · Debug Logs
Debug log is not capturing for a specific user. How do you troubleshoot?
✅ Answer
Check: log is active (not expired), correct user selected, 50-log limit not reached, user performed action AFTER log was created.
- ✅Verify log expiry — recreate if expired. Logs have a fixed duration.
- ✅Check 50-log limit — delete old logs if full.
- ✅Exact username match — one wrong character = no log captured
- 🔥Automated processes: add log for Automated Process user
🎤 One-Line Answer
"Check expiry, 50-log limit, exact username. User must act AFTER log created. Automated processes need Automated Process user log."
4
Q04 · Debug Logs
How do you debug a Salesforce Flow that is throwing an error?
✅ Answer
6-step process: error email → Paused Interviews → Flow Debugger → debug log → fault paths → field API names.
- 1Error email — Salesforce sends admin email with fault path details
- 2Setup → Flows → Paused/Failed Interviews — see exact error state
- 3Flow Debugger — Flow Builder → Debug button → step through
- 4Debug log for running user — filter FLOW events
- 5Fault paths — add to every element. No fault path = silent failure.
- 6Field API names — wrong name = null values. Case sensitive.
🎤 One-Line Answer
"Error email → Paused Interviews → Flow Debugger → debug log → fault paths → API names. Add fault paths everywhere."
5
Q05 · Debugging
A user reports a validation rule is blocking them but cannot tell which one. How do you identify it?
✅ Answer
The error message on screen IS the validation rule’s Error Message field. Search that text in Setup → Object → Validation Rules to find the exact rule.
- 💡Error on page = validation rule Error Message text. Match it to find rule.
- 💡Setup → Object → Validation Rules — check all active rules
- 🔥Test bypass: add
AND $Profile.Name != “System Administrator”temporarily
🎤 One-Line Answer
"Error message text = validation rule Error Message field. Search that text in Setup → Validation Rules to find which rule fired."
6
Q06 · Debugging
What is the Developer Console and what are its key features for support engineers?
✅ Answer
Developer Console: browser-based IDE. Key support features: Execute Anonymous Apex, debug log viewer, SOQL Query Editor, Apex test runner, code coverage, Checkpoints.
| Feature | Location | Support Use Case |
|---|---|---|
| Execute Anonymous | Debug menu | Run ad-hoc Apex, fix data, test logic |
| Query Editor | Query Editor tab | Run SOQL to inspect records |
| Log Inspector | Logs tab | Filter and analyze debug logs |
| Test Runner | Test menu | Run tests, check coverage |
| Checkpoints | Debug menu | Heap snapshot at code line |
🎤 One-Line Answer
"Developer Console: Execute Anonymous, SOQL Query Editor, debug log viewer, test runner. Every support engineer’s primary debugging tool."
7
Q07 · Debugging
How do you use Execute Anonymous for debugging?
✅ Answer
Developer Console → Debug → Execute Anonymous. Runs Apex instantly without deployment. Query records, inspect field values, test logic, or fix data on the spot.
// Check a specific record
Account acc = [SELECT Id, Name, Status__c
FROM Account WHERE Id = '001xx000003GYk1'];
System.debug('Name: ' + acc.Name);
System.debug('Status: ' + acc.Status__c);
// Fix data
// acc.Status__c = 'Active';
// update acc;
🎤 One-Line Answer
"Execute Anonymous: run ad-hoc Apex without deploy. Query records, test logic, fix data. Output in debug log — System.debug() shows values."
8
Q08 · Debugging
How do you troubleshoot when an Apex trigger is not firing?
✅ Answer
Checklist: trigger is active, correct DML event (before/after insert/update), no kill switch, debug log shows trigger class executing.
- 1Setup → Apex Triggers → find trigger → verify Is Active = checked
- 2Verify DML event:
after insert,before update— wrong event = never fires - 3Debug log → perform action → check if trigger class appears in log
- 4Check Custom Metadata kill switch — trigger may be intentionally disabled
🎤 One-Line Answer
"Verify Active, correct DML event, no kill switch. Debug log shows if trigger class executes. Wrong event = trigger never fires."
9
Q09 · Debugging
What is Workbench and how do support engineers use it?
✅ Answer
Workbench (workbench.developerforce.com): free web tool for SOQL queries, REST API calls, data manipulation, metadata retrieval, streaming. Essential for querying and fixing production data.
- 💡SOQL — complex queries, relationship queries, inspect any record
- 💡REST Explorer — test GET/POST/PATCH endpoints without code
- 💡Data — bulk insert/update/delete via CSV
- 🔥Streaming — monitor Platform Events and CDC live
🎤 One-Line Answer
"Workbench: SOQL, REST API, data manipulation without code. Query any record, fix data, test endpoints. Essential production support tool."
10
Q10 · Debugging
What is the difference between a handled and unhandled exception in Apex?
✅ Answer
Handled: caught in try-catch — execution continues, custom error logic runs. Unhandled: no catch block — entire transaction rolls back, Salesforce error page shown to user, email sent to admin.
| Type | Transaction | User Sees | Admin Notified |
|---|---|---|---|
| Handled (try-catch) | Continues | Custom message | Only if logged |
| Unhandled | Full rollback | SF error page | Auto email |
🎤 One-Line Answer
"Handled: try-catch, execution continues, custom message. Unhandled: full rollback, error page, admin email. Always wrap callouts and DML in try-catch."
11
Q11 · Debugging
How do you debug a Visualforce page that shows a blank screen?
✅ Answer
Enable Development Mode on the user — shows detailed error on page. Most VF blank screens = NullPointerException in controller or bad binding expression.
- 1Setup → Users → Edit user → check Development Mode → Save
- 2Reload VF page — shows error details and code editor at bottom
- 3Add
?debug=1to URL for additional output - 4Check controller debug log — filter for EXCEPTION events
🎤 One-Line Answer
"Enable Development Mode → detailed errors on VF page. Most blank VF = NullPointerException in controller. Debug log EXCEPTION events show exact cause."
12
Q12 · Debugging
What is addError() in Apex triggers and when do you use it?
✅ Answer
addError() prevents DML on a specific record and shows a user-friendly message. Unlike throwing an exception, only THAT record is blocked — other records in same transaction may still save.trigger AccountTrigger on Account (before insert) {
for(Account acc : Trigger.new) {
if(acc.AnnualRevenue == null) {
acc.addError('Annual Revenue is required.');
}
// Field-level error
if(acc.Phone == null) {
acc.Phone.addError('Phone is mandatory.');
}
}
}
🎤 One-Line Answer
"addError() blocks that record with user-friendly message. Only that record fails — others may succeed. Use for business validation in triggers."
13
Q13 · Debugging
How do you hotfix a critical bug in production without full deployment?
✅ Answer
Custom Metadata kill switch (instant, no deploy), Execute Anonymous to fix data, update Custom Metadata/Settings to change behavior. Then proper fix in sandbox and deploy.
🚨 Critical Rule
NEVER edit Apex directly in production. Kill switch first to stop damage, then fix in sandbox and deploy via Change Set.🎤 One-Line Answer
"Kill switch via Custom Metadata (no deploy, instant). Execute Anonymous fixes data. Proper fix in sandbox → deploy. Never edit production Apex directly."
14
Q14 · Debugging
What are Checkpoints in Salesforce Developer Console?
✅ Answer
Checkpoints capture a heap snapshot at a specific Apex code line — showing all variables, types, and values at that exact execution moment. Better than System.debug() for complex objects.
- 💡Set: Developer Console → open Apex class → click line gutter → red dot appears
- 💡View: Developer Console → Checkpoints tab → expand → all variables in memory
- 🔥Shows full object structure — not just toString(). Ideal for List, Map, SObject inspection.
- 💡Max 5 checkpoints per session.
🎤 One-Line Answer
"Checkpoints: heap snapshot at code line — shows all variable values and types. Better than System.debug for complex objects. Max 5 per session."
15
Q15 · Debugging
How do you use Setup Audit Trail for debugging?
✅ Answer
Setup Audit Trail records all configuration changes — who changed what and when — for 180 days. Essential when “it worked yesterday” investigations.
- 💡Path: Setup → Quick Find: “View Setup Audit Trail”
- 💡Shows: user, date, action, what was changed (field, rule, class, profile)
- 🔥Critical: “everything worked yesterday” — Audit Trail shows exactly what changed
🎤 One-Line Answer
"Audit Trail: 180-day log of all Setup changes — who changed what, when. First thing to check when ‘it stopped working yesterday.’"
⚡
Section 2: Governor Limits & Common Errors
Must know — asked in every support interview
Q16–Q30
16
Q16 · Governor Limits
What are Governor Limits and why do they exist?
✅ Answer
Runtime execution limits enforced so no single tenant monopolizes Salesforce’s shared multitenant infrastructure. Every Apex transaction runs within these limits.
| Limit | Sync | Async |
|---|---|---|
| SOQL Queries | 100 | 200 |
| SOQL Rows | 50,000 | 50,000 |
| DML Statements | 150 | 150 |
| DML Rows | 10,000 | 10,000 |
| CPU Time | 10,000ms | 60,000ms |
| Heap Size | 6MB | 12MB |
| Callouts | 100 | 100 |
🎤 One-Line Answer
"Governor Limits protect multitenant infrastructure: 100 SOQL, 150 DML, 10K CPU (sync). Use Queueable/Batch for heavy work — async gets higher limits."
17
Q17 · Governor Limits
What is “Too many SOQL queries: 101” and how do you fix it?
✅ Answer
Most common Apex error — SOQL inside a loop. Fix: move SOQL outside loop, use Map for O(1) lookups inside loop. Query once, access many times.
// ❌ WRONG — SOQL in loop
for(Account acc : accounts) {
Contact c = [SELECT Id FROM Contact
WHERE AccountId = :acc.Id];
}
// ✅ CORRECT — One SOQL outside loop
Map<Id, List<Contact>> cMap = new Map<Id, List<Contact>>();
for(Contact c : [SELECT Id, AccountId FROM Contact
WHERE AccountId IN :accountIds]) {
if(!cMap.containsKey(c.AccountId))
cMap.put(c.AccountId, new List<Contact>());
cMap.get(c.AccountId).add(c);
}
for(Account acc : accounts) {
List<Contact> cons = cMap.get(acc.Id); // No SOQL!
}
🎤 One-Line Answer
"SOQL in loop = instant governor limit. Move query outside, Map for O(1) lookup inside. Query once, access many times."
18
Q18 · Common Errors
What is MIXED_DML_OPERATION error and how do you fix it?
✅ Answer
Occurs when setup objects (User, Profile) and non-setup objects (Account, Contact) are DMLed in the same transaction. Fix: move setup DML to @future method.
// ❌ WRONG
User u = new User(...); insert u; // Setup object
Account a = new Account(...); insert a; // MIXED_DML error!
// ✅ CORRECT
@future
public static void createUser(String name) {
User u = new User(...);
insert u; // Separate transaction — no conflict
}
🎤 One-Line Answer
"MIXED_DML: setup (User/Profile) + non-setup (Account) in same transaction. Move setup DML to @future — runs in separate transaction."
19
Q19 · Common Errors
What is UNABLE_TO_LOCK_ROW error?
✅ Answer
Concurrent transactions fighting for the same record lock. Common when child trigger updates parent — multiple children save simultaneously = deadlock.
- 💡Child trigger updates parent → multiple saves simultaneously → deadlock
- ✅Use Platform Events to decouple parent updates
- ✅Use Queueable with chaining for sequential processing
- ✅
SELECT ... FOR UPDATEto proactively lock record
🎤 One-Line Answer
"Concurrent transactions fighting for same record. Decouple parent updates via Platform Events. Queueable for sequential processing."
20
Q20 · Common Errors
What is “Callout not allowed after uncommitted work” error?
✅ Answer
Salesforce blocks HTTP callouts after DML in same transaction — can’t guarantee external system rollback if DML fails. Fix: @future(callout=true) or Queueable — both run after transaction commits.
// ❌ WRONG
insert account; // DML done
Http h = new Http(); // ERROR!
// ✅ CORRECT
trigger AccTrigger on Account (after insert) {
MyService.callERP(
new Map<Id,Account>(Trigger.new).keySet()
); // @future(callout=true) method
}
🎤 One-Line Answer
"Callout blocked after DML — external API can’t be un-called on rollback. Use @future(callout=true) or Queueable which run after commit."
21
Q21 · Common Errors
What is a NullPointerException and how do you prevent it?
✅ Answer
NPE = calling method or accessing property on a null variable. Most common Apex error. Prevention: null checks, safe navigation operator (?.).
// ❌ WRONG — NPE if no Contact or no Email
String email = acc.Contacts[0].Email.toUpperCase();
// ✅ CORRECT — Null checks
if(acc.Contacts != null && !acc.Contacts.isEmpty()
&& acc.Contacts[0].Email != null) {
String email = acc.Contacts[0].Email.toUpperCase();
}
// ✅ BETTER — Safe navigation operator
String email = acc?.Contacts?.get(0)?.Email?.toUpperCase();
🎤 One-Line Answer
"NPE = method on null. Use safe navigation (?.) or null checks. Most NPEs from relationship fields not queried in SOQL."
22
Q22 · Governor Limits
How do you check remaining governor limits programmatically?
✅ Answer
Use the Limits class — provides current usage and maximum for every governor limit. Also visible as LIMIT_USAGE_FOR_NS at end of debug log.
System.debug('SOQL: ' + Limits.getQueries() +
'/' + Limits.getLimitQueries());
System.debug('DML: ' + Limits.getDmlStatements());
System.debug('CPU: ' + Limits.getCpuTime() + 'ms');
System.debug('Heap: ' + Limits.getHeapSize() + ' bytes');
// Conditional check
if((Limits.getLimitQueries() - Limits.getQueries()) > 10) {
// Safe to query more
}
🎤 One-Line Answer
"Limits class: getQueries(), getLimitQueries(), getCpuTime(), getHeapSize(). LIMIT_USAGE_FOR_NS at debug log end shows all. Use in Batch to avoid mid-execution violations."
23
Q23 · Common Errors
What is SOQL injection and how do you prevent it?
✅ Answer
User input in dynamic SOQL allows attackers to modify query logic and access unauthorized data. Prevention: bind variables (:var) are injection-proof, or String.escapeSingleQuotes().
// ❌ VULNERABLE
String q = 'SELECT Id FROM Account WHERE Name = \''
+ userInput + '\'';
// Attacker enters: ' OR Name != '' → ALL accounts!
// ✅ SAFE — Bind variable
List<Account> accs = [SELECT Id FROM Account
WHERE Name = :userInput];
// ✅ SAFE — Escape for dynamic SOQL
String safe = String.escapeSingleQuotes(userInput);
🎤 One-Line Answer
"SOQL injection: unescaped user input modifies query. Bind variables (:var) injection-proof. escapeSingleQuotes() for unavoidable dynamic SOQL."
24
Q24 · Governor Limits
How do you handle CPU Time Limit exceeded error?
✅ Answer
10,000ms sync limit. Caused by nested loops, complex operations. Fix: replace nested loops with Map lookups, move heavy work to Queueable/Batch (60,000ms limit).
- ❌Nested loops (O(n²)) — biggest CPU killer. Replace with Map lookups O(1).
- ❌String concatenation in loops — use List + String.join() instead
- ✅Move heavy processing to Batch Apex or Queueable (60K ms limit)
- ✅Check
Limits.getCpuTime()to profile which code consumes most
🎤 One-Line Answer
"CPU limit: nested loops or complex logic. Replace nested loops with Maps (O(1)), move heavy work to Queueable/Batch. 60,000ms async vs 10,000ms sync."
25
Q25 · Governor Limits
What happens when a Batch Apex chunk exceeds governor limits?
✅ Answer
Only that chunk (execute() call) fails and rolls back — other chunks continue. Each execute() gets fresh governor limits. finish() still runs.
- 💡Each execute() = fresh 100 SOQL, 150 DML, 60K CPU limits
- 💡Failed chunk: rolls back → logged in AsyncApexJob → other chunks unaffected
- 🔥Reduce scope:
Database.executeBatch(job, 50)— fewer records = fewer limits per chunk
🎤 One-Line Answer
"Batch: only failed chunk rolls back — other chunks continue. Each execute() gets fresh limits. Reduce scope size if hitting limits."
26
Q26 · Common Errors
What is FIELD_CUSTOM_VALIDATION_EXCEPTION and how do you catch it?
✅ Answer
Validation rule blocked the DML. Catch DmlException and use getDmlMessage() and getDmlFieldNames() to identify which rule fired.
try {
insert account;
} catch(DmlException e) {
for(Integer i = 0; i < e.getNumDml(); i++) {
System.debug('Type: ' + e.getDmlType(i));
// FIELD_CUSTOM_VALIDATION_EXCEPTION
System.debug('Field: ' + e.getDmlFieldNames(i));
System.debug('Message: ' + e.getDmlMessage(i));
}
}
🎤 One-Line Answer
"FIELD_CUSTOM_VALIDATION_EXCEPTION = validation rule blocked DML. Catch DmlException, getDmlType(), getDmlMessage() for exact details."
27
Q27 · Governor Limits
How do you fix “Too many DML statements: 151” error?
✅ Answer
DML inside a loop hits 150 limit instantly. Fix: modify records in memory inside the loop, then execute ONE DML on the entire list after the loop.
// ❌ WRONG — DML in loop
for(Contact c : contacts) {
c.Phone = '9999';
update c; // 1 DML per contact!
}
// ✅ CORRECT — Bulkified
for(Contact c : contacts) {
c.Phone = '9999'; // Memory only
}
update contacts; // ONE DML for all
🎤 One-Line Answer
"DML in loop = hits 150 instantly. Modify in memory inside loop, ONE DML on full list after loop. Bulkification is Salesforce’s golden rule."
28
Q28 · Common Errors
What causes heap size limit exceeded?
✅ Answer
Heap = memory for all variables. 6MB sync / 12MB async. Exceeded by querying large text fields on many records, or storing huge API responses.
- ❌Querying Description/Body fields on thousands of records
- ❌Storing entire large JSON API response as String
- ✅SELECT only fields you need — never SELECT *
- ✅Null out variables when done:
largeList = null;
🎤 One-Line Answer
"Heap exceeded: too many large text fields in memory. Query only needed fields, null variables after use, Batch for large volumes."
29
Q29 · Common Errors
What is the difference between with sharing and without sharing?
✅ Answer
with sharing: SOQL respects user’s sharing rules. without sharing: system mode, sees all records. Neither auto-enforces FLS — use WITH SECURITY_ENFORCED separately.
| Keyword | Sharing Rules | FLS/CRUD | Use When |
|---|---|---|---|
| with sharing | Enforced | Not automatic | User-facing code |
| without sharing | Ignored | Not automatic | Admin, batch |
| inherited sharing | From caller | Not automatic | Utility classes |
🎤 One-Line Answer
"with sharing: SOQL respects sharing rules. without sharing: sees all records. Add WITH SECURITY_ENFORCED for FLS — sharing keywords don’t enforce FLS."
30
Q30 · Common Errors
What is WITH SECURITY_ENFORCED and why is it important?
✅ Answer
Enforces FLS and CRUD in SOQL — throws if user can’t access a queried field. Without it, Apex runs in system mode and bypasses FLS (security violation in user-facing code).
// Without security — bypasses FLS
List<Account> accs = [SELECT Id, Salary__c FROM Account];
// With security — respects user FLS
List<Account> accs = [SELECT Id, Salary__c FROM Account
WITH SECURITY_ENFORCED];
// Modern alternative
SObjectAccessDecision d = Security.stripInaccessible(
AccessType.READABLE, accounts);
🎤 One-Line Answer
"WITH SECURITY_ENFORCED enforces FLS in SOQL. Throws if user can’t access field. Mandatory in user-facing Apex. Security.stripInaccessible() is the newer alternative."
🔒
Section 3: Security & Access Issues
Users can’t see records, fields, buttons — diagnose fast
Q31–Q45
31
Q31 · Security
A user cannot see a record they should have access to. Walk through your troubleshooting steps.
✅ Answer
Follow the access hierarchy from widest to narrowest: Profile Object permissions → OWD → Role Hierarchy → Sharing Rules → Manual Sharing → Sharing Debugger.
- 1Profile/Permission Set — Read permission on the object?
- 2OWD — if Private, user needs explicit sharing. Setup → Sharing Settings
- 3Role Hierarchy — is user’s role above record owner’s role?
- 4Sharing Rules — criteria-based rules that should cover this user?
- 5Sharing Debugger — Setup → Sharing Settings → Sharing Debugger → user + record ID
🎤 One-Line Answer
"Profile → OWD → Role Hierarchy → Sharing Rules → Sharing Debugger. Always in this order. Sharing Debugger gives definitive answer in 30 seconds."
32
Q32 · Security
A user cannot see a field on a record page. What are the two things you check?
✅ Answer
Two independent layers both required: FLS (Field-Level Security) in Profile/Permission Set AND Page Layout. Either one missing = field invisible.
⚡ Key Point
FLS = can user access this field at all. Page Layout = is field displayed. BOTH required. FLS OK but off layout = hidden. On layout but FLS blocked = hidden.- 1FLS: Setup → Object → Fields → click field → Field Accessibility → user’s profile = Read
- 2Page Layout: Setup → Object → Page Layouts → verify field is included
- 3Record Type: different types = different layouts. Check which applies to this user.
🎤 One-Line Answer
"Field invisible: check FLS in Profile AND Page Layout. Both required. FLS OK but off layout = hidden. On layout but FLS blocked = hidden."
33
Q33 · Security
What is the Sharing Debugger and how do you use it?
✅ Answer
Sharing Debugger shows exactly why a user can or cannot access a specific record — all sharing entries, source (OWD/role/rule/manual), and access level. Fastest access troubleshooting tool.
- 1Setup → Quick Find: “Sharing Settings” → scroll to bottom → Sharing Debugger
- 2Enter User and Record ID → click Debug
- 3See every sharing entry: Access Level + Sharing Reason + Source
- 4No entries = no access. Read entry = can view. Edit = can modify.
🎤 One-Line Answer
"Sharing Debugger: Setup → Sharing Settings → enter user + record ID. Shows every sharing entry explaining WHY user has or lacks access."
34
Q34 · Security
A user gets “Insufficient Privileges” error. How do you diagnose?
✅ Answer
Generic error — identify exact action first, then check the specific permission for that action.
- 💡Record access → Sharing Debugger
- 💡Tab/App access → Profile → App/Tab Settings
- 💡Running Apex/VF → Profile → Apex class/VF page access
- 💡Object CRUD → Profile → Object settings
- 💡Event Monitoring → exact permission check that failed (requires license)
🎤 One-Line Answer
"Insufficient Privileges: identify exact action first. Record = Sharing Debugger. Tab/App = Profile settings. Apex/VF = class/page access."
35
Q35 · Security
What is the difference between Profile and Permission Set?
✅ Answer
Profile: mandatory, one per user, baseline access. Permission Set: optional, multiple per user, only ADDS permissions — never restricts. Modern: minimal profile + Permission Sets.
| Aspect | Profile | Permission Set |
|---|---|---|
| Required? | Yes — one per user | No — optional, multiple |
| Can restrict? | Yes | No — only adds |
| Best practice | Minimal base access | Role-specific additions |
🎤 One-Line Answer
"Profile: required, one per user, base access. Permission Set: optional, multiple, only adds. Modern: minimal profile + targeted Permission Sets per role."
36
Q36 · Security
How do you unlock a locked user account?
✅ Answer
Setup → Users → find user → Unlock button. Check Login History first to confirm truly locked vs wrong password.
- 1Setup → Quick Find: “Users” → find user
- 2Click user name → Unlock button at top
- 3Also: Reset Password → sends reset email
- 4Check Login History first — status: “Failed: Locked Out” vs “Failed: Wrong Password”
🎤 One-Line Answer
"Setup → Users → Unlock button. Check Login History to confirm locked vs wrong password. Reset Password sends new credentials."
37
Q37 · Security
What is Login History and how is it useful for support?
✅ Answer
Records every login attempt: user, timestamp, IP, browser, status. 6-month retention. Critical for lockouts, failed logins, suspicious access, SSO troubleshooting.
- 💡Path: Setup → Quick Find: “Login History”
- 💡Status column: “Failed: Wrong Password” vs “Failed: Locked Out” — different fixes
- 💡IP address: find which system causes failed logins
- 💡SSO issues: “Failed: Unknown” = SAML assertion mismatch → check IdP logs
🎤 One-Line Answer
"Login History: 6 months of login attempts with status, IP, browser. First tool for lockout and authentication troubleshooting."
38
Q38 · Security
What are the different OWD settings?
✅ Answer
OWD sets the baseline access for all records. Sharing rules can only open up from OWD, never restrict below it.
| OWD Setting | View | Edit |
|---|---|---|
| Private | Owner + above in hierarchy | Owner only |
| Public Read Only | Everyone | Owner + hierarchy |
| Public Read/Write | Everyone | Everyone |
| Controlled by Parent | Inherits from parent | Inherits |
🎤 One-Line Answer
"OWD = baseline. Private = owner only. Read Only = all view, owner edits. Read/Write = all view and edit. Start restrictive, open with sharing rules."
39
Q39 · Security
What is a Permission Set Group?
✅ Answer
Bundles multiple Permission Sets into one assignable group. Supports Muting Permission Sets to REMOVE specific permissions within the group for exceptions.
- 💡Create: Setup → Permission Set Groups → New → add Permission Sets
- 💡Assign like a regular PSset — user gets all included permissions
- 💡Muting PSets — remove specific permissions within group for exceptions. Unique to groups.
- 💡Example: “Sales Manager Group” = Sales PSets + Manager access in one assignment
🎤 One-Line Answer
"Permission Set Group: bundle of PSets in one assignment. Muting PSets remove specific permissions for exceptions — only available in groups."
40
Q40 · Security
How do you log in as another user for support purposes?
✅ Answer
Admin can Login As user from Setup → Users → Login link. User must grant access via My Settings → Grant Account Login Access.
- 💡Path: Setup → Users → find user → Login link
- 💡User grants access: My Settings → Grant Account Login Access → set duration
- 💡Support value: reproduce issue in user’s exact context without knowing their password
- 💡All logins audited in Login History — full audit trail
🎤 One-Line Answer
"Setup → Users → Login. User must grant access. Reproduces issue in user’s exact context. All logins audited."
41
Q41 · Security
What is Event Monitoring and when do support engineers use it?
✅ Answer
Event Monitoring (add-on license) logs 70+ activity types: logins, record views, API calls, exports, Apex executions. Used for security investigations, compliance, performance diagnosis.
- 💡Access: Workbench REST → /services/data/v62.0/sobjects/EventLogFile
- 💡70+ event types: LoginEvent, ReportEvent, ApiEvent, ApexCalloutEvent
- 💡Scenario: user deleted 500 records — Event Monitoring shows who/when/which records
- 💡Real-time with Shield Event Monitoring
🎤 One-Line Answer
"Event Monitoring: 70+ activity logs for security audits and compliance. Requires license. Shows exactly who did what and when."
42
Q42 · Security
A user can suddenly see records they should not. How do you investigate?
✅ Answer
Over-exposure investigation: Audit Trail for recent changes → Sharing Debugger to find excess access entry → check new sharing rules, OWD changes, role changes.
- 1Audit Trail — what changed recently? OWD? New sharing rule? Role change?
- 2Sharing Debugger — user + record → which entry grants excess access?
- 3User changes — new role assigned? New Permission Set? New Profile?
- 4Remediate — remove incorrect sharing rule, revert OWD, fix role
🎤 One-Line Answer
"Audit Trail shows what changed. Sharing Debugger shows which entry grants excess access. Remove incorrect sharing rule or revert change."
43
Q43 · Security
What is System.runAs() and when do you use it?
✅ Answer
Runs a code block in the context of a specific user — respecting their sharing rules, FLS, permissions. Test-only (not available in production Apex). Used to simulate user data access in test classes.
@isTest
static void testUserAccess() {
User rep = [SELECT Id FROM User
WHERE Username = 'rep@company.com'];
System.runAs(rep) {
// Respects rep's sharing rules
List<Account> visible = [SELECT Id FROM Account];
System.debug('Rep sees: ' + visible.size());
}
}
🎤 One-Line Answer
"System.runAs(user): simulate user context in tests — SOQL respects their sharing. Test-only. Reveals exactly what data a specific user can access."
44
Q44 · Security
A user cannot click a button on a record page. What do you check?
✅ Answer
Button visibility: Page Layout (button not added), Profile Apex/VF access (button calls code user can’t access), button display formula (evaluates to false), Record Type layout.
- 💡Page Layout — button not in layout Buttons section → add it
- 💡Profile → Apex/VF access — button calls class or page user can’t access
- 💡Button display formula — evaluates to false for this record
- 💡Record Type — different layout per type may exclude the button
🎤 One-Line Answer
"Button missing: Page Layout, Profile Apex/VF access, display formula false, Record Type layout. Check all four in order."
45
Q45 · Security
What is IP Allowlisting and how does it affect support cases?
✅ Answer
Restricts login to specific IP ranges. Users outside allowed ranges get login failure. Check Profile Login IP Ranges and org-level Network Access (trusted IPs).
- 💡Profile IP ranges: Setup → Profiles → edit → Login IP Ranges
- 💡Org trusted IPs: Setup → Network Access
- 💡Remote workers: VPN IP not in allowed range → add VPN IPs to trusted ranges
- 💡Email verification challenge sent if IP not trusted and 2FA not enabled
🎤 One-Line Answer
"IP Allowlisting blocks logins from unapproved IPs. Check Profile Login IP Ranges and Setup → Network Access. Add VPN IPs to trusted ranges for remote workers."
📊
Section 4: Data & Migration Issues
Data problems, duplicates, migration troubleshooting
Q46–Q57
46
Q46 · Data
How do you recover accidentally deleted records?
✅ Answer
Deleted records go to Recycle Bin — retained 15 days. Undelete from App Launcher → Recycle Bin or via Apex with ALL ROWS query.
// Query deleted records
List<Account> deleted = [SELECT Id, Name FROM Account
WHERE IsDeleted = true ALL ROWS];
// Undelete
undelete deleted;
// OR: App Launcher → Recycle Bin → select → Undelete
🎤 One-Line Answer
"Recycle Bin: 15-day recovery. Undelete from App Launcher or Apex undelete DML. After 15 days or hard delete — restore from backup only."
47
Q47 · Data
How do you identify and merge duplicate records?
✅ Answer
Three approaches: Duplicate Rules (automated), manual merge button (2-3 records), Apex merge statement (bulk programmatic).
// Apex merge
Account master = [SELECT Id FROM Account WHERE Id = :masterId];
List<Account> dupes = [SELECT Id FROM Account WHERE Id IN :dupeIds];
merge master dupes;
// Dupes deleted, related records (Contacts, Opps)
// automatically transferred to master
🎤 One-Line Answer
"Duplicate Rules prevent future dupes. Manual merge for 2-3 records. Apex merge for bulk — all related records auto-transfer to master."
48
Q48 · Data
A Data Loader import failed for some records. How do you identify and fix them?
✅ Answer
Data Loader generates success.csv and error.csv. Error CSV has exact error per row. Fix errors in CSV, re-run with failed rows only.
- 1After import → save both success.csv and error.csv
- 2Open error.csv → ERROR column = exact error per row
- 3Common: required field blank, invalid picklist, parent ID not found
- 4Fix data in CSV → re-run Data Loader with error rows only
- 5Load order: parent objects first, then children
🎤 One-Line Answer
"error.csv has exact error per failed row. Fix data, re-run with failed rows only. Load parents before children."
49
Q49 · Data
What is an External ID and why is it critical for migration?
✅ Answer
Custom field marked as External ID — auto-indexed, enables upsert without Salesforce IDs, makes migration idempotent (retry 10 times = same result, no duplicates).
- 💡Create: Setup → Object → New Field → check “External ID” checkbox
- 💡Upsert by External ID: match = update. No match = insert. Idempotent.
- 💡Without External ID: retry on failure = duplicate records. With: retry = safe update.
- 💡CSV relationship: Contact.Account:SAP_No__c instead of SF Account ID
🎤 One-Line Answer
"External ID enables upsert without SF ID — retry-safe, no duplicates. Mandatory on every migration object."
50
Q50 · Data
What is the difference between hard delete and soft delete?
✅ Answer
Soft delete: Recycle Bin, 15-day recovery, still counts in storage. Hard delete: permanent, bypasses Recycle Bin, frees storage, requires “Bulk API Hard Delete” permission.
| Type | Recycle Bin | Recovery | Storage |
|---|---|---|---|
| Soft Delete | Yes | 15 days | Still counted |
| Hard Delete | No | Never | Freed immediately |
🎤 One-Line Answer
"Soft delete: 15-day Recycle Bin recovery. Hard delete: permanent, no recovery, frees storage. Hard delete needs special permission in Data Loader."
51
Q51 · Data
How do you disable triggers during data migration?
✅ Answer
Custom Metadata kill switch in every trigger — toggle without deployment. Also disable email deliverability and deactivate Flows.
trigger ContactTrigger on Contact (before insert, after insert) {
Migration_Config__mdt cfg = [
SELECT Is_Active__c FROM Migration_Config__mdt
WHERE Label = 'ContactTrigger' LIMIT 1
];
if(!cfg.Is_Active__c) return; // Skip ALL logic!
new ContactTriggerHandler().run();
}
// Disable: set Is_Active__c = false in Custom Metadata
// No code deployment needed!
🎤 One-Line Answer
"Custom Metadata kill switch: instant toggle without deployment. Disable email deliverability and Flows too. Never deploy code just to disable during migration."
52
Q52 · Data
How do you validate data quality after a migration?
✅ Answer
5-step validation: record count comparison, spot checks, relationship integrity (orphan check), required field completeness, business report comparison, then UAT with real users.
- 💡Count: source record count = Salesforce count?
- 💡Spot checks: 20-30 random records field by field
- 💡Orphan check:
SELECT Id FROM Contact WHERE AccountId = null - 💡Business reports: key metrics match source system
- 💡UAT: real users verify their data — they catch anomalies fastest
🎤 One-Line Answer
"Counts, spot checks, orphan check, business reports, UAT. Users find anomalies faster than technical checks — always include them."
53
Q53 · Data
What is Data Import Wizard vs Data Loader?
✅ Answer
Import Wizard: browser-based, max 50K, limited objects, no delete. Data Loader: desktop/CLI, millions of records, all objects, all DML, schedulable.
| Feature | Import Wizard | Data Loader |
|---|---|---|
| Max records | 50,000 | Millions |
| Objects | Limited | All objects |
| Operations | Insert, Update, Upsert | All + Delete + Hard Delete |
| Scheduling | No | Yes (CLI) |
🎤 One-Line Answer
"Import Wizard: 50K, browser, limited objects. Data Loader: millions, all objects, all DML, CLI scheduling. Use Data Loader for serious migration work."
54
Q54 · Data
How do you fix records corrupted by a bad automation?
✅ Answer
Stop → Identify → Test fix on 5 records → Bulk fix → Verify. Disable automation first, find affected records via SOQL with LastModifiedDate.
// Identify affected records
List<Account> affected = [
SELECT Id, Status__c FROM Account
WHERE LastModifiedDate >= 2026-05-21T10:00:00Z
AND LastModifiedDate <= 2026-05-21T11:00:00Z
AND Status__c = 'Wrong_Value'
];
// Fix
for(Account a : affected) { a.Status__c = 'Correct_Value'; }
update affected;
🎤 One-Line Answer
"Disable automation → SOQL by LastModifiedDate finds affected → test on 5 → bulk fix → verify. LastModifiedDate = your time machine."
55
Q55 · Data
How do you handle relationship fields in Data Loader?
✅ Answer
Use External ID relationship columns in CSV:
Account:ExternalId__c. Data Loader resolves parent by External ID without needing Salesforce IDs.// Contact CSV with External ID relationship
FirstName,LastName,Account:SAP_Customer_No__c
John,Smith,CUST-12345
Jane,Doe,CUST-67890
// Data Loader finds Account WHERE SAP_Customer_No__c = CUST-12345
// Links Contact automatically — no SF Account ID needed!
🎤 One-Line Answer
"External ID relationship columns: Account:ExternalId__c. Data Loader resolves parent without SF IDs. Always load parents before children."
56
Q56 · Data
What is Bulk API 2.0?
✅ Answer
REST-based async CSV processing — 150M records/day separate limit. Create job → upload CSV → poll for status → download success/error. Data Loader uses it internally.
- 💡Async: fire and forget. Check job status via job ID.
- 💡150M records/day separate from regular 1M API limit
- 💡Use UPSERT not INSERT — idempotent if job fails and retries
- 💡Create → Upload CSV → Poll status → Download results
🎤 One-Line Answer
"Bulk API 2.0: async CSV jobs, 150M records/day separate limit. Create → upload → poll → download. Use Upsert for idempotent migrations."
57
Q57 · Data
What is a Salesforce data backup strategy?
✅ Answer
Layered approach: Data Export (scheduled CSV), Salesforce Backup (native paid), or OwnBackup/Spanning. Test restore quarterly — backup without tested restore is false security.
- 💡Data Export: Setup → Data Management → Data Export → schedule weekly
- 💡Salesforce Backup: native product, daily snapshots, easy restore
- 💡OwnBackup/Spanning: automated daily, cross-org restore
- 💡Test restore quarterly — backup that’s never been restored is just archived data
🎤 One-Line Answer
"Data Export + Salesforce Backup or OwnBackup. Test restore quarterly. Backup without tested restore = false security."
🔗
Section 5: Integration & API Errors
REST API, callout failures, integration debugging
Q58–Q72
58
Q58 · Integration
How do you troubleshoot a failed Salesforce outbound REST callout?
✅ Answer
Enable debug log → filter CALLOUT events → read HTTP status code → diagnose by status.
| Status Code | Meaning | Fix |
|---|---|---|
| 401 | Auth failed | Check OAuth token, Named Credential |
| 403 | No permission | Check API scope, IP allowlist |
| 404 | Wrong URL | Verify endpoint in Named Credential |
| 500 | External error | Check external logs, retry |
| 503 | External down | Wait, retry later |
| Timeout | Too slow | Increase req.setTimeout() |
🎤 One-Line Answer
"Debug log → CALLOUT events → status code. 401=auth, 404=wrong URL, 500=external error, timeout=increase timeout. Each status has specific fix."
59
Q59 · Integration
What is “Unauthorized endpoint” error and how do you fix it?
✅ Answer
Endpoint URL not whitelisted in Salesforce. Fix: add to Remote Site Settings OR switch to Named Credentials (bypasses RST automatically).
- 1Setup → Remote Site Settings → New → enter base URL
- 2Save → retry callout
- 3Better fix: switch to Named Credentials — auto-bypasses RST, handles auth too
🎤 One-Line Answer
"Unauthorized endpoint: URL not in Remote Site Settings. Add to RST or switch to Named Credentials. Named Credentials bypass RST automatically."
60
Q60 · Integration
What is a Named Credential?
✅ Answer
Stores endpoint URL + auth encrypted in Salesforce. Referenced as
callout:Name. Auto-refreshes OAuth tokens. URL changes → update once → all callouts fixed, no code deploy.HttpRequest req = new HttpRequest();
req.setEndpoint('callout:XYZ_ERP/orders'); // Named Credential
req.setMethod('GET');
req.setTimeout(30000);
Http h = new Http();
HttpResponse res = h.send(req);
🎤 One-Line Answer
"Named Credential: encrypted endpoint + auth, callout:Name syntax, auto-refreshes OAuth. URL changes → update once → all callouts fixed, no code deploy."
61
Q61 · Integration
How do you mock HTTP callouts in Apex test classes?
✅ Answer
Implement HttpCalloutMock interface, register via Test.setMock(). Intercepts all HTTP calls in test transaction. Always test success AND failure.
@isTest
public class MockHTTP implements HttpCalloutMock {
public HTTPResponse respond(HTTPRequest req) {
HTTPResponse res = new HTTPResponse();
res.setStatusCode(200);
res.setBody('{"status":"success"}');
return res;
}
}
@isTest static void testIt() {
Test.setMock(HttpCalloutMock.class, new MockHTTP());
Test.startTest();
MyService.doCallout();
Test.stopTest();
}
🎤 One-Line Answer
"Test.setMock(HttpCalloutMock.class, new Mock()) intercepts HTTP calls. Test success (200) AND failure (500, 401). No real API calls in tests."
62
Q62 · Integration
An integration is creating duplicate records. How do you fix it?
✅ Answer
Root cause: INSERT instead of UPSERT, or no External ID. Fix: add External ID field, switch to UPSERT by External ID. Same record sent 100 times = 1 record updated.
- 1Add External ID field to object (New Field → check External ID)
- 2Change integration to UPSERT by External ID instead of INSERT
- 3Add Duplicate Rules as backup
- 4Clean existing dupes via Apex merge statement
🎤 One-Line Answer
"Dupes = INSERT without External ID. Fix: add External ID → switch to UPSERT. Same record 100 times = 1 record updated, zero dupes."
63
Q63 · Integration
How do you check Salesforce API limits?
✅ Answer
Setup → Company Information (API Requests Last 24 Hours), REST API /limits endpoint, or System Overview page. Alert at 80% to prevent disruption.
// REST API — all limits with remaining
GET /services/data/v62.0/limits
// Response:
// "DailyApiRequests":{"Max":1000000,"Remaining":950000}
// "DailyBulkApiRequests":{"Max":150000000,"Remaining":149000000}
🎤 One-Line Answer
"Setup → Company Information shows API usage. /services/data/v62.0/limits returns all limits. Alert at 80% — not when already hit."
64
Q64 · Integration
What is Platform Event and how do you troubleshoot delivery failures?
✅ Answer
Platform Events = pub-sub messaging. Delivery failures: check EventBusSubscriber for Status/LastError, use 72-hour replay to resend missed events.
// Check subscriber status
SELECT Id, ExternalId, LastError, Position,
RetryCount, Status, Topic
FROM EventBusSubscriber
// Status: Running=healthy, Stopped/Error=problem
// LastError: exact delivery failure reason
🎤 One-Line Answer
"EventBusSubscriber: Status and LastError reveal delivery failures. 72-hour replay resends missed events. Subscriber trigger errors in debug log."
65
Q65 · Integration
What is idempotency and why must integrations be idempotent?
✅ Answer
Idempotency: same request processed multiple times = same result. No duplicates, no errors on retry. Critical because network failures cause automatic retries.
- 💡External ID upsert makes operations idempotent
- 💡Same record sent 100 times = 1 record updated, never 100 records
- 💡Network retries are inevitable in distributed systems
- 💡Design all integrations idempotent from day 1
🎤 One-Line Answer
"Idempotency: same request 100 times = same result. External ID upsert achieves this. Design all integrations idempotent — retries are inevitable."
66
Q66 · Integration
What is the Composite API?
✅ Answer
25 REST subrequests in ONE HTTP call with @{referenceId} chaining — output of step 1 as input for step 2. 25x more API-efficient.
POST /services/data/v62.0/composite
{
"allOrNone": true,
"compositeRequest": [
{"method":"POST","referenceId":"NewAcc",
"url":"/services/data/v62.0/sobjects/Account",
"body":{"Name":"ABC Pharma"}},
{"method":"POST","referenceId":"NewCon",
"url":"/services/data/v62.0/sobjects/Contact",
"body":{"LastName":"Smith",
"AccountId":"@{NewAcc.id}"}}
]
}
🎤 One-Line Answer
"Composite: 25 subrequests in 1 HTTP call with @{referenceId} chaining. allOrNone=true for atomic. 25x API-efficient for related record creation."
67
Q67 · Integration
How do you log integration errors in Salesforce?
✅ Answer
Custom Integration_Error__c object + Database.insert(log, false) — allOrNone=false ensures logging never itself throws.
public class IntegrationLogger {
public static void log(String source, Integer status,
String msg, Id recId) {
Integration_Error__c err = new Integration_Error__c(
Source__c = source,
HTTP_Status__c = status,
Error_Message__c = msg,
Record_Id__c = recId,
Status__c = 'Pending Retry'
);
Database.insert(err, false); // Never throws!
}
}
🎤 One-Line Answer
"Integration_Error__c + Database.insert(log, false) — logging never throws. Build CRMA dashboard on it. Know failures before users report them."
68
Q68 · Integration
What is Change Data Capture and how is it different from Platform Events?
✅ Answer
CDC: auto-publishes change events for every CUD — zero code. Platform Events: custom events published manually. CDC for data sync, Platform Events for business process triggers.
| Feature | CDC | Platform Events |
|---|---|---|
| Publisher | Salesforce (auto) | Developer (manual) |
| Code needed | Zero (Setup only) | EventBus.publish() |
| Use for | Data sync | Business process |
🎤 One-Line Answer
"CDC: auto-published every CUD, zero code, for data sync. Platform Events: manually published, for business process. CDC for sync, PE for business logic."
69
Q69 · Integration
Records are not syncing from external system to Salesforce. How do you debug?
✅ Answer
External logs → Postman manual test → auth check → payload validation → validation rules → trigger errors.
- 1External system logs — is it actually sending? What HTTP response?
- 2Postman manual test — replicate same call manually. Isolates Salesforce vs external.
- 3Auth — OAuth token valid? Re-authenticate.
- 4Payload — required fields? Correct data types? Valid picklists?
- 5Validation rules — is a rule blocking insert silently?
🎤 One-Line Answer
"External logs → Postman manual test → auth → payload → validation rules. Postman test isolates whether issue is Salesforce or external."
70
Q70 · Integration
What are the OAuth 2.0 flows in Salesforce?
✅ Answer
JWT Bearer (recommended for server-to-server), Web Server (browser apps), Username-Password (avoid production), Device (IoT/CLI).
| Flow | Use For | Recommended? |
|---|---|---|
| JWT Bearer | Server-to-server automated | ✅ Yes |
| Web Server | Browser-based apps | ✅ Yes |
| Username-Password | Testing only | ❌ Avoid prod |
| Device | IoT, CLI | ✅ Specific use |
🎤 One-Line Answer
"JWT Bearer: server-to-server, certificate-based, recommended. Web Server: browser apps. Username-Password: avoid production."
71
Q71 · Integration
What is the Salesforce REST API endpoint structure?
✅ Answer
Base:
https://[instance].salesforce.com/services/data/v62.0/. Key endpoints: /sobjects (CRUD), /query (SOQL), /composite (batch), /limits (usage).GET /services/data/v62.0/sobjects/Account/{id} // Read
POST /services/data/v62.0/sobjects/Account // Create
PATCH /services/data/v62.0/sobjects/Account/{id} // Update
DELETE /services/data/v62.0/sobjects/Account/{id} // Delete
GET /services/data/v62.0/query?q=SELECT+Id+FROM+Account
GET /services/data/v62.0/limits // API usage
POST /services/data/v62.0/composite // Batch
🎤 One-Line Answer
"/services/data/v62.0/ — /sobjects for CRUD, /query for SOQL, /composite for batching, /limits for monitoring. Always pin API version explicitly."
72
Q72 · Integration
How do you implement retry logic for failed API callouts?
✅ Answer
Queueable with attempt counter — catch 5xx/exceptions → re-enqueue with count+1. After MAX_ATTEMPTS: log error. Never retry 4xx — bad request won’t succeed on retry.
- 💡Queueable implements both Queueable AND Database.AllowsCallouts
- 💡Catch 5xx responses: re-enqueue with attempts+1
- 💡After MAX_ATTEMPTS (e.g. 3): log to Integration_Error__c
- 💡4xx responses (400, 401, 404): DO NOT retry — fix the request instead
🎤 One-Line Answer
"Queueable with attempt counter: catch 5xx → re-enqueue count+1 → log after MAX. Never retry 4xx — bad requests won’t succeed."
☁
Section 6: Service Cloud & Case Management
Core knowledge for Salesforce Support Engineer roles
Q73–Q90
73
Q73 · Service Cloud
What is the typical Case lifecycle in Salesforce Service Cloud?
✅ Answer
New → Assigned → In Progress → Pending Customer → Resolved → Closed. Each stage triggers automation: assignment rules, SLA milestones, escalation rules, notifications.
| Stage | Automation Triggered |
|---|---|
| New | Assignment Rules route to queue/agent |
| Assigned | SLA timer starts, agent notified |
| Pending Customer | Auto-email, optional timer pause |
| Resolved | CSAT survey sent |
| Closed | Auto-close after X days if no response |
🎤 One-Line Answer
"New → Assigned → In Progress → Pending Customer → Resolved → Closed. Assignment rules, SLAs, escalation rules trigger at each stage."
74
Q74 · Service Cloud
Case Assignment Rules are not routing cases. How do you troubleshoot?
✅ Answer
Check: only one rule can be active, rule entry order (first match wins), criteria on entries, checkbox on case creation.
- 1Setup → Case Assignment Rules → verify Active checkbox = checked. One active rule only.
- 2Check rule entry ORDER — evaluates top to bottom, first match wins
- 3Verify rule entry CRITERIA — correct field/operator/value?
- 4UI case creation: “Assign using active assignment rules” checkbox must be checked
- 5API/Apex: must set
AssignmentRuleHeader
🎤 One-Line Answer
"Assignment rules not firing: check Active, rule entry order, criteria. UI: checkbox required. API: set AssignmentRuleHeader."
75
Q75 · Service Cloud
What are Entitlements and Milestones in Salesforce?
✅ Answer
Entitlement: defines support level a customer gets. Milestone: time-based SLA steps within Entitlement Process. Violation triggers escalation.
- 💡Entitlement — linked to Account — defines WHAT support they receive
- 💡Entitlement Process — defines SLA steps (milestones) for cases
- 💡Milestone — “First Response: 1 hour”, “Resolution: 8 hours”
- 💡Violation — exceeded → triggers escalation (email, field update, reassign)
🎤 One-Line Answer
"Entitlement = support level. Milestones = SLA timing steps. Violation triggers escalation. Core of Salesforce SLA enforcement."
76
Q76 · Service Cloud
What is Omni-Channel and how does it route work?
✅ Answer
Routes Cases, chats, custom objects to agents based on availability, capacity, skills. Agents set Presence Status; work is automatically pushed to available agents.
| Component | Purpose |
|---|---|
| Service Channel | Defines type of work (Cases, custom) |
| Routing Config | Priority, capacity, routing model |
| Queue | Holds unassigned work |
| Presence Status | Agent availability (Available/Busy/Away) |
🎤 One-Line Answer
"Omni-Channel: routes Cases/chats to agents by availability + capacity. Service Channels + Routing Configs + Queues + Presence Status. Replaces manual queue assignment."
77
Q77 · Service Cloud
Email-to-Case is not creating cases. How do you troubleshoot?
✅ Answer
Check: feature enabled, routing address active, Email Log Files for receipt, deliverability setting, sender not blocked.
- 1Setup → Email-to-Case → verify feature Enabled
- 2Routing Addresses → verify email address active + “Enable On-Demand Service” checked
- 3Email Log Files (Setup → Email) — did Salesforce receive the email?
- 4Deliverability → must be “All Email” not “System Email Only”
- 5Setup → Email → Email Blocked Senders — sender blocked?
🎤 One-Line Answer
"Email-to-Case not creating cases: check feature enabled, routing address active, Email Log Files, deliverability = All Email, sender not blocked."
78
Q78 · Service Cloud
What is a Case Escalation Rule?
✅ Answer
Auto-escalates cases not resolved within defined time — reassigns owner, sends notification, changes priority. Respects Business Hours for accurate SLA calculation.
- 💡Create: Setup → Escalation Rules → New → criteria + age threshold
- 💡Example: open > 4 hours AND Priority = High → reassign to Senior Queue
- 💡Actions: reassign owner, send email notification, change priority
- 💡Works with Business Hours — excludes off-hours from case age calculation
🎤 One-Line Answer
"Escalation Rules: auto-escalate if case age > threshold. Actions: reassign, notify, change priority. Business Hours ensures accurate SLA time."
79
Q79 · Service Cloud
What is Salesforce Knowledge?
✅ Answer
Article knowledge base for agents and customer self-service. Article lifecycle: Draft → In Review → Published → Archived. Einstein surfaces relevant articles automatically on Case open.
- 💡Create: New Article → Draft → Submit for Review → Publish
- 💡Agents attach articles to Cases → consistency and faster resolution
- 💡Einstein Case Classification + Knowledge = AI surfaces relevant article on Case creation
- 💡Customer self-service: publish to Experience Cloud Help Center
🎤 One-Line Answer
"Knowledge: article base for agents + self-service. Draft → Review → Published. Einstein surfaces articles on Case. Reduces handle time."
80
Q80 · Service Cloud
What is Service Console and how is it different from standard view?
✅ Answer
Service Console: multi-tab layout, split-screen, keyboard shortcuts, Omni-Channel widget, macros. Optimized for handling multiple cases simultaneously.
| Feature | Standard View | Service Console |
|---|---|---|
| Multiple records | One page at a time | Multiple tabs |
| Related records | Separate page | Split screen inline |
| Macros | No | Yes |
| Omni-Channel | Limited | Built-in widget |
🎤 One-Line Answer
"Service Console: multi-tab, split-screen, macros, Omni-Channel. Dramatically faster for agents handling high case volume."
81
Q81 · Service Cloud
What are Macros in Service Console?
✅ Answer
Automate repetitive multi-step actions — single click: update status, send email, add comment, change priority. Reduces handle time and ensures consistency.
- 💡Setup: Setup → Macros → New → add instructions (Update, Email, Quick Text)
- 💡Agents run: Macros widget in Service Console → click macro name
- 💡Example: “Close Case” → Status=Closed + send closure email + add comment
- 💡Bulk Macros: run across multiple selected cases simultaneously
🎤 One-Line Answer
"Macros: one-click multi-step automation. Update fields, send emails, add comments — all in one click. Reduces handle time, ensures consistency."
82
Q82 · Service Cloud
How do you auto-close cases after customer inactivity?
✅ Answer
Record-Triggered Flow with scheduled path OR Escalation Rule: when status = “Pending Customer” → wait 5 days → if still pending → close + notify.
// Record-Triggered Flow:
// Trigger: Case status changed to 'Pending Customer'
// Scheduled Path: 5 days after LastModifiedDate
// Condition: Status still = 'Pending Customer'?
// If yes: Update Status = 'Closed'
// Send email: 'Case auto-closed'
// OR Escalation Rule:
// Case Age > 5 days AND Status = Pending Customer
// Action: Update Status = Closed
🎤 One-Line Answer
"Flow with scheduled path: wait 5 days → still pending → close + notify. OR Escalation Rule: case age > 5 days = auto-close."
83
Q83 · Service Cloud
What are Quick Actions in Salesforce?
✅ Answer
Shortened forms for common tasks — Log Call, New Task, Send Email — directly from record page without navigating away. Massive productivity boost for support agents.
- 💡Create: Object → Buttons, Links and Actions → New Action → configure fields → add to Page Layout
- 💡Object-specific: only on that object (Log a Call on Case)
- 💡Global: any page (New Task from anywhere)
- 💡Agents log calls in 2 clicks vs navigating multiple pages
🎤 One-Line Answer
"Quick Actions: shortened forms for Log Call, New Task, Send Email without navigating away. Add to Page Layout. Major productivity gain."
84
Q84 · Service Cloud
What are Business Hours and why are they important?
✅ Answer
Define when support team is available. Used by Escalation Rules and SLA Milestones to calculate case age — excluding off-hours and holidays for accurate SLA.
- 1Setup → Business Hours → New → name, timezone, working days/hours
- 2Add Holidays → exclude public holidays from SLA calculation
- 3Assign to Escalation Rules and Entitlement Processes
- 4Create multiple sets: “India Hours”, “US Hours” for global teams
🎤 One-Line Answer
"Business Hours: define working hours/timezone. Escalation Rules and SLA Milestones use them for accurate time excluding off-hours."
85
Q85 · Service Cloud
What is Einstein Case Classification?
✅ Answer
AI auto-populates Case fields (Priority, Reason, Type) from case text using ML trained on historical cases. Reduces agent data entry, improves routing accuracy.
- 💡Setup → Einstein Case Classification → enable → needs 1000+ historical cases
- 💡Predicts: Priority, Case Type, Case Reason, custom picklist fields
- 💡Combined with Assignment Rules: AI sets Priority=High → routes to senior queue
- 💡Agent reviews AI suggestions → confirms or overrides → model improves
🎤 One-Line Answer
"Einstein Case Classification: AI fills Priority/Type/Reason from case text. Trains on 1000+ cases. Reduces entry, improves routing accuracy."
86
Q86 · Service Cloud
What is a Case Queue?
✅ Answer
Queue: holding area for unassigned cases. Members see and accept cases. Assignment Rules route in, Omni-Channel pushes from queues to agents by availability.
- 💡Create: Setup → Queues → New → objects → add members (users/groups)
- 💡Members see queued cases in list views filtered by Queue Name
- 💡Accept: open case → Accept button (Omni-Channel) or change owner manually
- 💡Queue email: notify all members when new case arrives
🎤 One-Line Answer
"Queue: holding area for unassigned cases. Assignment Rules route in, Omni-Channel pushes to agents. Members see and accept cases."
87
Q87 · Service Cloud
Approval emails are not reaching approvers. How do you troubleshoot?
✅ Answer
Check: email deliverability = All Email, approver active with valid email, Email Alert configured in approval process, Email Log Files for bounce.
- 1Deliverability: Setup → Email → Deliverability = “All Email”
- 2Approver active: Setup → Users → active? Valid email address?
- 3Approval Process: Initial Submission Actions → Email Alert configured?
- 4Email Log Files: did Salesforce send? Bounce or block?
- 5HasOptedOutOfEmail: approver opted out?
🎤 One-Line Answer
"Approval emails missing: deliverability = All Email, approver active with valid email, Email Alert in approval process, Email Log Files for bounce."
88
Q88 · Service Cloud
What is Embedded Service Chat (Live Agent)?
✅ Answer
Real-time chat on websites/Experience Cloud. Sessions routed via Omni-Channel. Pre-chat form captures customer info. Transcripts auto-create Cases.
- 💡Setup: Embedded Service → New Deployment → configure button, branding, routing
- 💡Pre-chat form: captures name, email, case reason → auto-populates Case
- 💡Supervisor: monitor chats, whisper to agent, take over chat
- 💡Einstein Bot handles routine questions → escalates complex to human
🎤 One-Line Answer
"Embedded Chat: real-time chat routed via Omni-Channel. Pre-chat auto-creates Case. Supervisor can monitor and whisper. Transcripts saved."
89
Q89 · Service Cloud
What is a Case Deflection strategy?
✅ Answer
Deflection = preventing cases via self-service: Knowledge Help Center, Einstein Bot for FAQs, web-to-case article suggestions. Fewer cases = agents handle complex issues only.
- 💡Knowledge + Help Center: customers find answers before contacting support
- 💡Einstein Bot: handles FAQs, escalates complex to agents
- 💡Web-to-Case deflection: show relevant articles before case form submission
- 💡Deflection metric: % of users who found answer without submitting case
🎤 One-Line Answer
"Case deflection: Knowledge + Einstein Bot + web-to-case article suggestions. Customers self-serve → fewer cases → agents handle complex issues."
90
Q90 · Service Cloud
What are Quick Text and Email Templates?
✅ Answer
Quick Text: short pre-written snippets inserted with ; shortcut. Email Templates: full email templates with merge fields for consistent communication.
- 💡Quick Text: Setup → Quick Text → type ; in email composer → suggestions appear
- 💡Email Templates: Setup → Email → Templates → create with merge fields {!Case.CaseNumber}
- 💡Templates ensure brand consistency in customer communications
- 💡Combine with Macros: one-click sends specific template = maximum efficiency
🎤 One-Line Answer
"Quick Text: ; shortcut snippets. Email Templates: full emails with merge fields. Combine with Macros for one-click consistent communication."
🚀
Section 7: Deployment & Release Management
Change Sets, SFDX, sandboxes — support engineers handle deployments daily
Q91–Q105
91
Q91 · Deployment
What is a Change Set and how do you troubleshoot deployment failures?
✅ Answer
Deploys metadata between connected orgs. Failures: missing dependencies, test failures (75% coverage needed), component errors.
- 1Setup → Deployment Status → find deployment → click for error details
- 2“Component not found in target” — missing dependency. Add it to Change Set.
- 3Test failures — 75%+ org-wide coverage required. Check failing test class.
- 4Validate first — run validation (no deploy) to catch issues early
- 5Quick Deploy — after successful validation, deploy without re-running tests (24hr window)
🎤 One-Line Answer
"Change Set failures: Deployment Status shows errors. 75% coverage required. Validate first, then Quick Deploy. Missing dependencies = most common failure."
92
Q92 · Deployment
What are the different types of Salesforce Sandboxes?
✅ Answer
Four types: Developer (metadata only, 200MB, daily refresh), Developer Pro (1GB, daily), Partial Copy (sample data, 5GB, 5-day), Full Copy (full production, 29-day).
| Type | Data | Storage | Refresh | Use For |
|---|---|---|---|---|
| Developer | No prod data | 200MB | 1 day | Dev, unit testing |
| Developer Pro | No prod data | 1GB | 1 day | Larger projects |
| Partial Copy | Sample data | 5GB | 5 days | Testing, QA |
| Full Copy | Full prod data | Same as prod | 29 days | UAT, perf testing |
🎤 One-Line Answer
"Developer (200MB, daily), Developer Pro (1GB, daily), Partial Copy (5GB, 5-day, sample data), Full Copy (full data, 29-day). Full Copy for UAT."
93
Q93 · Deployment
What is SFDX and how does it differ from Change Sets?
✅ Answer
SFDX: CLI-based, source-driven development with Git version control, CI/CD pipelines, scratch orgs. Better than Change Sets: version control, automation, rollback via Git.
| Feature | Change Sets | SFDX |
|---|---|---|
| Version control | No | Git-based |
| Automation | Manual | CI/CD pipelines |
| Rollback | Manual | git revert |
| Dev environments | Sandboxes only | Scratch Orgs |
🎤 One-Line Answer
"SFDX: CLI + Git + CI/CD + Scratch Orgs. Change Sets: manual, no version control. SFDX for modern teams, Change Sets for simple deployments."
94
Q94 · Deployment
How do you check and fix Apex test coverage issues?
✅ Answer
Need 75%+ org-wide coverage for production deployment. Developer Console highlights uncovered lines in red. Fix: write test methods covering uncovered paths.
// Check coverage via SOQL
SELECT ApexClassOrTriggerId, NumLinesCovered,
NumLinesUncovered
FROM ApexCodeCoverageAggregate
WHERE ApexClassOrTrigger.Name = 'MyClass'
// Developer Console: Tests menu → Run All
// Red lines = uncovered paths needing test methods
// Fix: add test for uncovered scenario
@isTest
static void testErrorPath() {
Account acc = new Account(Name='Test');
try { insert acc; } catch(Exception e) {
System.assert(e.getMessage() != null);
}
}
🎤 One-Line Answer
"Run All Tests shows coverage %. Developer Console highlights red uncovered lines. Write tests for uncovered paths. 75% org-wide minimum for production deploy."
95
Q95 · Deployment
What is Quick Deploy?
✅ Answer
After successful validation (tests passed), deploy to production without re-running tests — minutes vs hours for large orgs. Valid 10 days after validation.
- 1Run Validate on Change Set — runs all tests but doesn’t actually deploy
- 2After successful validation → Quick Deploy button appears (valid 10 days)
- 3Click Quick Deploy during off-peak hours → deploys in minutes
- 410-day window to use Quick Deploy after validation
🎤 One-Line Answer
"Validate first (tests run but no deploy) → Quick Deploy deploys without re-running tests. Minutes vs hours. Valid 10 days after validation."
96
Q96 · Deployment
What is the difference between metadata and data deployment?
✅ Answer
Metadata: config and code — Apex, objects, Flows, layouts — via Change Sets/SFDX. Data: actual records — Accounts, Contacts — via Data Loader/Bulk API. Metadata first, then data.
| Type | What | Tool | Example |
|---|---|---|---|
| Metadata | Config/Code | Change Set, SFDX | Apex class, Flow, Object |
| Data | Records | Data Loader, Bulk API | Account records |
🎤 One-Line Answer
"Metadata = code/config via Change Sets/SFDX. Data = records via Data Loader/Bulk API. Both needed for complete environment. Metadata first, then data."
97
Q97 · Deployment
What happens to Custom Metadata when deploying between orgs?
✅ Answer
Custom Metadata records DEPLOY with metadata — they travel in Change Sets and SFDX automatically. Unlike Custom Settings (data = separate migration). This is why Custom Metadata is preferred for config.
✅ Why Custom Metadata is Preferred
Custom Metadata deploys with code. Custom Settings are data — need separate Data Loader migration. Always use Custom Metadata for configuration that needs to move between sandboxes and production.🎤 One-Line Answer
"Custom Metadata deploys with code automatically. Custom Settings are data — need separate migration. Always prefer Custom Metadata for deployable configuration."
98
Q98 · Deployment
A deployment succeeded but the feature is not working in production. Why?
✅ Answer
Deployment success ≠ feature working. Common causes: Flow deployed inactive, Custom Settings not populated, Permission Set not assigned, Named Credentials pointing to wrong endpoint.
- 💡Flows: deploy inactive by default — manually activate in target org
- 💡Custom Settings: data doesn’t deploy — add values in target org
- 💡Permission Sets: deployed but not yet assigned to users
- 💡Named Credentials: may still point to sandbox endpoint
🎤 One-Line Answer
"Deployment success ≠ feature working. Check: Flows activated, Custom Settings populated, Permission Sets assigned, Named Credentials pointing to production."
99
Q99 · Deployment
What is a deployment rollback strategy?
✅ Answer
No native one-click rollback. Options: SFDX git revert + redeploy (cleanest), kill switch via Custom Metadata (instant no-deploy), pre-prepared rollback Change Set.
- 💡SFDX: git revert → redeploy previous version (fastest, cleanest)
- 💡Kill switch: Custom Metadata flag disables code instantly without redeployment
- 💡Change Set: pre-prepare rollback CS before deployment — ready if needed
- 💡Prevention: thorough sandbox testing + validation run before every production deploy
🎤 One-Line Answer
"No native rollback. SFDX: git revert + redeploy. Kill switch: Custom Metadata flag. Change Sets: pre-prepared rollback CS. Prevention beats rollback."
100
Q100 · Deployment
How do you refresh a sandbox?
✅ Answer
Setup → Sandboxes → find sandbox → Refresh. Wipes all sandbox data and copies from production. After refresh: update Named Credentials and email deliverability.
- 💡Path: Setup → Quick Find: “Sandboxes” → find sandbox → Refresh
- 💡WARNING: wipes ALL data in sandbox — backup anything important first
- 💡After refresh: update email deliverability, Named Credentials, integration configs
- 💡Takes minutes (Dev) to hours (Full) depending on org size
🎤 One-Line Answer
"Setup → Sandboxes → Refresh. Wipes sandbox, copies from production. Backup before. Update deliverability and Named Credentials after."
101
Q101 · Deployment
What are Profile deployment challenges?
✅ Answer
Profiles contain references to ALL objects/fields — if target org has different config, deployment fails. Best practice: deploy Permission Sets instead.
- 💡Full Profile deploy = commonly fails due to missing fields/objects in target
- 💡Fix: deploy Permission Sets — only contain explicitly added permissions
- 💡If must deploy Profile: deploy dependent objects/fields FIRST, then Profile
- 💡SFDX tip:
--ignorewarningsfor non-critical Profile warnings in CI/CD
🎤 One-Line Answer
"Profile deployments fail due to missing field/object references. Deploy dependencies first. Better: use Permission Sets which only contain explicitly added permissions."
102
Q102 · Deployment
What is a Scratch Org?
✅ Answer
Temporary, source-driven, disposable Salesforce environment created in minutes. Clean slate per feature — no legacy config contamination. Expire in 1-30 days. Max 6 active per Dev Hub.
# Create scratch org
sfdx force:org:create -f config/project-scratch-def.json \
-a MyScratchOrg --durationdays 7
# Push local source
sfdx force:source:push
# Open in browser
sfdx force:org:open
# Clean slate: perfect for isolated feature dev + testing
🎤 One-Line Answer
"Scratch orgs: temp, disposable, source-driven. Created in minutes, expire 1-30 days. Clean slate per feature — no legacy contamination."
103
Q103 · Deployment
What is the difference between Managed and Unmanaged Package?
✅ Answer
Managed: protected IP, code hidden, upgradeable, namespace, AppExchange. Unmanaged: open code, fully editable, not upgradeable. Unlocked (SFDX): open + upgradeable, modular DevOps.
| Type | Code Visible | Upgradeable | Use For |
|---|---|---|---|
| Managed | No — protected | Yes | AppExchange products |
| Unmanaged | Yes — editable | No | Templates, open-source |
| Unlocked | Yes | Yes | Enterprise DevOps |
🎤 One-Line Answer
"Managed: hidden code, upgradeable, AppExchange. Unmanaged: open code, not upgradeable. Unlocked: open + upgradeable, SFDX enterprise DevOps."
104
Q104 · Deployment
How do you monitor a deployment in progress?
✅ Answer
Setup → Deployment Status: real-time progress, components deployed/failed, test results. Can abort mid-deployment if critical error detected.
- 💡Path: Setup → Quick Find: “Deployment Status”
- 💡Shows: % complete, components succeeded/failed, tests passing/failing
- 💡Cancel: click Abort button — rolls back all changes
- 💡After completion: full report of succeeded, failed, coverage per class
🎤 One-Line Answer
"Setup → Deployment Status: real-time progress, component status, test results. Can abort mid-deploy. Validate first saves time by catching errors early."
105
Q105 · Deployment
What is Salesforce order of execution?
✅ Answer
Critical for debugging conflicting automations — determines which runs first when multiple automations configured on same object.
Order of Execution (simplified):
1. System Validation Rules
2. Before Triggers
3. Custom Validation Rules
4. Duplicate Rules
5. After Triggers
6. Assignment Rules
7. Auto-Response Rules
8. Workflow Rules (field updates)
9. Flows
10. Escalation Rules
11. Roll-up Summaries
12. Async: @future, Platform Events
🎤 One-Line Answer
"Before trigger → Validation Rules → After trigger → Workflow → Flows. Critical for debugging conflicts between multiple automations on same object."
🎯
Section 8: Real-World Scenario Questions
Asked in every senior support engineer interview
Q106–Q120
106
Q106 · Scenario
SCENARIO: Users report Salesforce is running very slowly today. How do you diagnose?
✅ Answer
Systematic: trust.salesforce.com first (platform incident?) → isolate scope → check Apex Jobs → API limits → debug log for slow SOQL.
- 1trust.salesforce.com — platform incident? No point debugging your org if SF is down
- 2Isolate scope — all users or one? All pages or specific?
- 3Apex Jobs — Setup → Apex Jobs → long-running jobs consuming CPU?
- 4API limits — near daily limit? API throttling causes slowness
- 5Debug log — affected user → check SOQL timing and CPU usage
- 6Browser — clear cache? Try incognito? Different browser?
🎤 One-Line Answer
"trust.salesforce.com first. Isolate: all users vs one, all pages vs specific. Apex Jobs, API limits, debug log. Clear browser cache often fixes it."
107
Q107 · Scenario
SCENARIO: 10,000 records were accidentally deleted in production. What do you do?
✅ Answer
Recycle Bin (15 days) → mass undelete → if hard deleted/expired, restore from backup. Stop the cause, investigate, prevent recurrence.
- 1Recycle Bin — App Launcher → Recycle Bin → mass select → Undelete
- 2Apex undelete — ALL ROWS query + undelete DML for bulk
- 3Stop cause — disable automation that deleted them
- 4Audit Trail — who deleted? User, automation, integration?
- 5Hard deleted/expired — restore from backup (OwnBackup, Data Export CSV)
- 6Prevention — remove Delete permission, validation rule blocking deletion
🎤 One-Line Answer
"Recycle Bin → mass undelete. Hard deleted: restore from backup. Stop cause. Audit Trail shows who. Prevention: remove Delete permission."
108
Q108 · Scenario
SCENARIO: A critical Apex trigger is blocking all Account saves in production. What do you do immediately?
✅ Answer
IMMEDIATE: deactivate trigger or use kill switch. Restore service FIRST. Diagnose and fix in sandbox. Then deploy fix and re-activate.
🚨 Critical Rule
ALWAYS stop the bleeding first. Deactivate trigger in 30 seconds = all users restored. Never try to quickly fix production trigger — makes it worse. Fix in sandbox, then deploy.- 1IMMEDIATE: Setup → Apex Triggers → uncheck Active → Save
- 2OR: Kill switch — Custom Metadata Is_Active__c = false (no deployment!)
- 3Communicate: notify users issue identified and being fixed
- 4Root cause: debug log → reproduce error → read exception
- 5Fix in sandbox → test → deploy → re-activate
🎤 One-Line Answer
"Deactivate trigger instantly. Restore service first, diagnose second. Fix in sandbox → deploy. Kill switch pattern prevents emergency deactivations."
109
Q109 · Scenario
SCENARIO: A user says “Salesforce is not working.” How do you begin?
✅ Answer
“Not working” is too vague. Gather specifics with 5 key questions before touching anything.
- ❓What exactly are you trying to do? (object, action)
- ❓What do you see? Error message? Blank page? Screenshot?
- ❓When did it start? Always? Today? After specific action?
- ❓Is it only you? Or others too?
- ❓Which browser/device? Chrome, Safari, Mobile?
💡 Fast Fix — Try This First
Clear browser cache + cookies, try incognito mode, try different browser. 40% of ‘not working’ issues are browser-related and resolved in 2 minutes.🎤 One-Line Answer
"Ask: what action, what error, when started, who else affected, which browser. Clear cache, try incognito. 40% of ‘not working’ = browser issue."
110
Q110 · Scenario
SCENARIO: A Flow set wrong values on 5,000 records. How do you fix it?
✅ Answer
Stop Flow → identify affected via SOQL with LastModifiedDate → test on 5 records → bulk fix → fix Flow root cause → redeploy.
// Step 1: Deactivate the bad Flow
// Step 2: Find affected records
List<Account> affected = [
SELECT Id, Status__c FROM Account
WHERE LastModifiedDate >= 2026-05-21T10:00:00Z
AND LastModifiedDate <= 2026-05-21T11:00:00Z
AND Status__c = 'Wrong_Value'
];
// Step 3: Fix (test on 5 records first!)
for(Account a : affected) { a.Status__c = 'Correct'; }
update affected;
🎤 One-Line Answer
"Deactivate Flow → SOQL by LastModifiedDate finds affected → test on 5 → bulk fix → fix Flow in sandbox → redeploy. LastModifiedDate = your time machine."
111
Q111 · Scenario
SCENARIO: An integration was working last week but now creates duplicates. What happened?
✅ Answer
Something changed last week. Audit Trail reveals it. Check: UPSERT vs INSERT switch, External ID cleared, Duplicate Rules disabled.
- 1Audit Trail — what changed between last week and now?
- 2Integration code — UPSERT or INSERT? Was it recently changed?
- 3External ID field — still populated on existing records?
- 4Duplicate Rules — disabled or criteria changed?
- 5Fix: switch to UPSERT + External ID, merge existing dupes
🎤 One-Line Answer
"Audit Trail reveals what changed. Check UPSERT vs INSERT, External ID cleared, Duplicate Rules disabled. Fix: UPSERT + External ID + merge existing dupes."
112
Q112 · Scenario
SCENARIO: An LWC shows blank in production but works in sandbox. Why?
✅ Answer
Blank LWC: F12 browser console for JS errors, FLS differences prod vs sandbox, data not existing in prod, hard refresh for cache, enable debug mode.
- 1F12 Browser Console — JavaScript error = exact blank screen cause
- 2FLS — queried fields accessible to this user in prod?
- 3Data — component expects data that doesn’t exist in prod
- 4Hard refresh — Ctrl+Shift+R clears cached CSS/JS
- 5Debug mode — Setup → Users → Development Mode for detailed JS errors
🎤 One-Line Answer
"F12 console first — JS error shows exact cause. Check FLS differences, data differences prod vs sandbox, hard refresh. Enable debug mode for detailed errors."
113
Q113 · Scenario
SCENARIO: A SOQL query that took 2 seconds now takes 30 seconds. Why?
✅ Answer
Performance degradation: data volume grew beyond index threshold, unindexed WHERE field, or index removed. Query Plan tool reveals index vs table scan.
- 💡Query Plan tool: Developer Console → Help menu → Query Plan → paste SOQL
- 💡Table scan = slow (scans all records). Index = fast.
- 💡Selective queries: WHERE on indexed field (Id, Name, External ID, custom indexed)
- 💡Request custom index from Salesforce Support for frequently-queried fields
🎤 One-Line Answer
"Query Plan tool shows index vs table scan. Table scan on large object = 30 seconds. Fix: WHERE on indexed field or request custom index from Salesforce Support."
114
Q114 · Scenario
SCENARIO: Salesforce emails are not reaching customers. How do you troubleshoot?
✅ Answer
Check: deliverability, Email Log Files for receipt/bounce, opt-out status, bounce list, SPF/DKIM DNS records.
- 1Deliverability: Setup → Email → Deliverability = “All Email” not “System Only”
- 2Email Log Files: Setup → Email → did SF send? Bounce or block?
- 3HasOptedOutOfEmail: Contact/Lead opted out?
- 4Bounce management: previous bounce = SF suppresses resending
- 5SPF/DKIM: for custom From address — verify DNS records
🎤 One-Line Answer
"Check: deliverability = All Email, Email Log Files for bounce/block, HasOptedOutOfEmail = false, SPF/DKIM for custom domain. Email Log Files is the definitive record."
115
Q115 · Scenario
SCENARIO: A Batch Apex job is stuck “In Progress” for hours. How do you handle it?
✅ Answer
Check if truly stuck (no progress 30+ min) → Abort via Setup → Apex Jobs → resubmit with smaller scope.
- 1Setup → Apex Jobs → find job → check records processed (not changing = stuck)
- 2If no progress 30+ min → click Abort button
- 3Debug log for Automated Process user → find governor limit error
- 4Re-run with smaller scope:
Database.executeBatch(job, 10) - 5Check for UNABLE_TO_LOCK_ROW on records being processed
🎤 One-Line Answer
"Apex Jobs → Abort. Debug log for Automated Process user shows root cause. Resubmit with smaller scope (10-50 records) to reduce governor limit pressure."
116
Q116 · Scenario
SCENARIO: Multiple automations on same object are conflicting. How do you resolve?
✅ Answer
Know order of execution. Consolidate to one trigger per object (handler pattern). Deactivate conflicting Process Builders/Workflows. Document all automations per object.
// One trigger per object — handler pattern
trigger AccountTrigger on Account (
before insert, after insert,
before update, after update) {
// Single entry point
new AccountTriggerHandler().run();
}
// No multiple triggers fighting each other
// All logic organized in one handler class
🎤 One-Line Answer
"One trigger per object (handler pattern) eliminates conflicts. Deactivate conflicting Process Builders. Document all automations per object — prevention beats debugging."
117
Q117 · Scenario
SCENARIO: A report is showing wrong numbers compared to last week. How do you investigate?
✅ Answer
Check filters (date range most common), run as affected user (sharing affects results), SOQL cross-check, verify data not mass-modified.
- 💡Check filters — date range, status, owner filters. Most common cause of wrong numbers.
- 💡Run as user — sharing rules affect report results. Log in as user to see their view.
- 💡SOQL cross-check — run equivalent SOQL → compare count to report
- 💡Data changes — records bulk-modified between last week and now?
🎤 One-Line Answer
"Check filters (date range most common), run as affected user (sharing affects results), SOQL cross-check. Audit Trail shows if data was bulk-modified."
118
Q118 · Scenario
SCENARIO: How do you prioritize multiple critical support issues simultaneously?
✅ Answer
Triage by business impact: production outage > data loss risk > critical feature broken > single user blocked > cosmetic. Communicate ETA immediately.
| Priority | Issue Type | Response |
|---|---|---|
| P1 Critical | Production down, all users | Immediate — drop everything |
| P2 High | Data loss, critical feature | Same day, hours |
| P3 Medium | Single user, workaround exists | Same or next business day |
| P4 Low | Enhancement, cosmetic | Next sprint |
🎤 One-Line Answer
"Triage: outage > data loss > feature broken > single user > cosmetic. Communicate ETA immediately. Document everything. Delegate parallel issues."
119
Q119 · Scenario
SCENARIO: After migration, many records have wrong owner. How do you fix it?
✅ Answer
Wrong OwnerId in migration. Fix: SOQL finds wrongly owned records → build source-to-SF user ID mapping → Data Loader Update with OwnerId column.
- 1Identify: SOQL → records owned by migration user or wrong owner
- 2Build mapping: source username → Salesforce User ID mapping CSV
- 3Data Loader Update: CSV with Id + OwnerId columns
- 4Verify: spot check 20 records after update
- 5Prevention: include OwnerId/owner External ID in migration CSV from start
🎤 One-Line Answer
"SOQL finds wrongly owned records. Build source-to-SF user ID mapping. Data Loader Update with OwnerId. Prevention: map owner IDs in migration CSV."
120
Q120 · Scenario
SCENARIO: What is your go-to checklist before making ANY change in a production Salesforce org?
✅ Answer
The non-negotiable production change checklist every support engineer must follow without exception.
- ✅Test in sandbox first — NEVER make untested changes in production
- ✅Peer review — second set of eyes on every change
- ✅Data backup — export affected records before any data changes
- ✅Communicate — notify users: “changes tonight 10PM–11PM”
- ✅Off-peak deploy — fewest active users = minimum blast radius
- ✅Rollback plan — know exactly how to undo BEFORE making change
- ✅Monitor 30 min post-deploy — watch debug logs and error emails
- 🔥Document — record what changed, when, why, by whom
🎤 One-Line Answer
"Sandbox test → peer review → backup → communicate → off-peak deploy → rollback plan → monitor → document. Production is sacred. Skipping sandbox costs 10x to fix later."