The customer has custom fields for Grant Period Start/End Date, and it's those fields that are on the layout and populated, however the debug log shows that the code is looking at NPSP versions of those fields instead:
Error is not the actual Validation Rule firing (since it's not by the field - it's by NPSP).
Repeat by creating Date fields on Opportunity with Dev names of Grant_Period_Start_Date and Grant_Period_End_Date in clean test org using this validation rule:
Thread: https://powerofus.force.com/0D580000034bNqe
Validation Rule in customer org is:
(RecordType.Name="Membership Grant" || RecordType.Name="Non-Member Grant") && IsWon=True && (ISBLANK(Grant_Period_Start_Date__c) || ISBLANK(Grant_Period_End_Date__c))
The customer has custom fields for Grant Period Start/End Date, and it's those fields that are on the layout and populated, however the debug log shows that the code is looking at NPSP versions of those fields instead:
Error is not the actual Validation Rule firing (since it's not by the field - it's by NPSP).
Repeat by creating Date fields on Opportunity with Dev names of Grant_Period_Start_Date and Grant_Period_End_Date in clean test org using this validation rule:
(RecordType.Name="Grant") && IsWon=True && (ISBLANK(Grant_Period_Start_Date__c) || ISBLANK(Grant_Period_End_Date__c))
Workaround: Change dev name of custom fields.