Loading

AccountID shows as null in the Before Insert event or Update Case trigger or during Email-To-Case creation.

게시 일자: Aug 26, 2025
상세 설명

When a case created via Email-To-Case or Manually or when editing a Case, you might notice that you cannot access the AccountId in certain scenarios. Below we will go through a reproducible scenario and state the result. 

 

1. First, let’s create a trigger on the Case object that loops through the list of new Cases and write the results to the debug logs:
trigger DebugCaseValues on Case (before insert, before update) {
    for(Case c : Trigger.new)
        System.debug('##### Case values: ' + c);
}
2. In the Case page layout, the Account and Contact fields are set to Read-Only.
3. Use two users to test the scenario. So, create one user that has the System Admin and the Standard User profiles.
4. Set debug logs against both users and complete the following.
5. Login as each user. Go to an Account, and then go the Case related list and click New Case.
6. Fill out the required fields and click Save
  • Result: Both users will see something similar to: "##### Case values: Case:{Id=null, ..., AccountId=001..."
7. Next go to a Contact record, and then go to the Case related list and click New Case. Fill out the required fields and click Save.
  • Results:
    • System Administrator: "##### Case values: Case:{Id=null, ..., ContactId=003..., AccountId=001..."
    • Standard User:  "##### Case values: Case:{Id=null, ..., ContactId=003..., AccountId=null, ..."


​​​In the results, we can see that, for the Standard User, the AccountId is returns null in the Before Insert event when both Account and Contact are being assigned on the Case creation.
 

솔루션
This result is considered to be working as designed due to the complexity of the implementation of the relationship between the Case, Contact, and Account records.

Because the Account field is Read-Only (as determined either by page layout or field-level security), the AccountId is being reviewed in the database via the Contact record passed resulting in the AccountId being null in the Apex Trigger. Once saved, just before the After Trigger events in the order of execution, the correct Id will be populated.

You can use the following workarounds:
  • For non-administrator users, make the Account field on the Case Object editable (in both field-level security and in the page layout)
  • Move the trigger logic based on the Account Id into the After Trigger events
  • In the Before Insert Trigger, query for the AccountId that is related to the assigned Contact and assign it to the Case.AccountId in the trigger*
*Note: This suggestion is based on standard implementation. The code required might vary depending on your implementation of the Case sObject.
Knowledge 기사 번호

000387008

 
로드 중
Salesforce Help | Article