public class ServiceRequestTrigger { private final Map oldMap; private final Map newMap; private final List newObjs; private final Boolean isInsert; private final Boolean isUpdate; private final Boolean isDelete; private final Boolean isBulk; /** * The constructor * * @param xoldMap The old map from the trigger * @param xnewObj The list of new objects from the trigger * @param isBefore If the trigger is in before or after */ public ServiceRequestTrigger(Map xoldMap, List xnewObjs, Boolean isBefore) { oldMap = xoldMap; newObjs = xnewObjs; if (!isBefore && newObjs != null) { newMap = new Map(newObjs); } isDelete = (((newObjs == null || newObjs.isEmpty()) && isBefore) || ((newMap == null || newMap.isEmpty()) && !isBefore)); isUpdate = ! (isDelete || oldMap == null || oldMap.isEmpty()); isInsert = ! (isDelete || isUpdate); isBulk = (newObjs != null && newObjs.size() > 1) ? true : false; } public void doAwesomeness() { for (Service_Request__c srf: newObjs) { if ( oldMap.get(srf.ID) != null && oldMap.get(srf.ID).Status__c != srf.Status__c && srf.Status__c == 'In Review' ) { //do stuff } } } /** * Method to initiate trigger logic * * @param oldMap The old map from the trigger * @param newObj The list of new objects from the trigger * @param isBefore If the trigger is in before or after */ public static void processTrigger(Map oldMap, List newObj, Boolean isBefore) { final ServiceRequestTrigger myTrigger = new ServiceRequestTrigger(oldMap, newObj, isBefore); if (!isBefore) { myTrigger.doAwesomeness(); } } }