Class can be improved a lot :
Issues :
Query in For loop
Added cyclomatic complexity
Bad Indentation
Empty check before DMLs
trigger MySLA on Account (after Update) { List newAccountListMap<Id,Account> newAccountMap = trigger.New;NewMap; Map<Id,Account> oldAccountMap = trigger.OldMap; Set accIds = new Set(); for(Account a : newAccountListnewAccountMap.values()){ if(a.SLA__c == 'Bronze' && oldAccountMap.get(a.Id).SLA__c != 'Bronze'){ accIds.add(a.Id); } } if(!accIds.IsEmpty()){ list conlist = new list(); list cons = [select AccountId, SLA_Serial_Number__c,SLA__c,SLA_Expiration_Date__c from contact where accountid IN :Trigger.new];accIds]; for(contact c:cons) { c.SLA__c = 'Bronze'; c.SLA_Expiration_Date__c = anewAccountMap.get(c.AccountId).SLAExpirationDate__c; c.SLA_Serial_Number__c = anewAccountMap.get(c.AccountId).SLASerialNumber__c; conlist.add(c); } if(!conlist.IsEmpty()){ update conlist; } } }