function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
KimKim 

Help with DMLOptions Not Triggering Case Assignment Rules on Before Trigger

Hello,

I'm not sure why the trigger is not triggering the Case assignment rules. I've checked other posts and have tried to requery my list and I'm still unable to get the Case Assignment Rule to work. 
 
public class Case_RunAssignmentRule {

	public static void runCaseAssignmentRules(List<Case> caseList) {

		List<Case> caseToUpdate = new List<Case> ();
		Id caseInboundRecordType = Schema.SObjectType.Case.getRecordTypeInfosByName().get('Inbound Case').getRecordTypeId();

		for (Case c : caseList) {
			if (c.RecordTypeId == caseInboundRecordType) {
				caseToUpdate.add(c);
				System.debug('CaseID --> ' + caseToUpdate);
			}

		}

		if (caseToUpdate.size() > 0) {
			//List<Case> caseToRunAssignment = [SELECT Id, OwnerId FROM Case WHERE Id IN :caseToUpdate];


			Database.DMLOptions dmo = new Database.DMLOptions();
			dmo.assignmentRuleHeader.useDefaultRule = true;
			System.debug('DMO --> ' + dmo);

			for (Case caseL : caseToUpdate) {
				caseL.setOptions(dmo);
				System.debug('caseOwner --> ' + caseL.OwnerId);
				System.debug('caseId --> ' + caseL);
			}

			//insert caseToUpdate;

		}
	}
}
@isTest
public class Case_RunAssignmentRuleTest {

	@testSetup static void setupTest() {
		List<TriggerController__c> tc = new List<TriggerController__c> {
			new TriggerController__c(Name = 'Case', Disabled__c = false)
		};
	}

	static testmethod void newCaseInsert() {
        
		List<Case> newCases = new List<Case> ();
		for (Integer i = 0; i<5; i++) {
			Case c = new Case();
			c.Subject = 'InboundCaseForCAR' + i;
			c.Product__c = 'G2M';
			c.Reason_Category__c = 'Admin Change';
			c.Case_Category__c = 'Contract Services';
			c.Status = 'New';
            c.RecordTypeId = '01213000001ZUeG'; 
			newCases.add(c);
		}

		test.startTest();
		insert(newCases);

		Id currentUserId = UserInfo.getUserId();

		List<Case> returnCaseList = [SELECT Id, OwnerId, Subject FROM Case WHERE Id IN :newCases];
		for (Case c : returnCaseList) {
			System.assertNotEquals(currentUserId, c.OwnerId);
			System.assertEquals(5, returnCaseList.size());
		}
		test.stopTest();
	}
}


 
Marcelo CostaMarcelo Costa
Hi there,
Looks like you are not setting the Record type for the case on the testclass...
Could that be it?
Good Luck.