If workflow doesn't work you could also go down the route of a scheduled apex class, something similar to what I've written below may help.
I've had problems with the Remedyforce Closed status value not updating the SLA clock, related to the Salesforce order of execution i believe? I'm presuming that's why you're going down the programmatic route rather than using a declarative workflow rule?
You can schedule the class to run once a day. If you need any further help I will try, but I'm not a developer, likewise if anybody else can see how to improve my code, feel free, I shan't be offended!
global class Set_Status_Closed_Scheduled Implements Schedulable // If an Incident has in a static Resolved state for 30 days, change it to Closed
global void execute (SchedulableContext sc)
public void changeStatusToClosed()
// Get Status ID for the ‘Closed’
List<BMCServiceDesk__Status__c> ClosedStatus = new List <BMCServiceDesk__Status__c>();
ClosedStatus = [SELECT Id FROM BMCServiceDesk__Status__c WHERE Name = 'Closed'];
List<BMCServiceDesk__Incident__c> listIncident = new List <BMCServiceDesk__Incident__c>();
List<BMCServiceDesk__Incident__c> updateListIncident = new list <BMCServiceDesk__Incident__c>();
// Define one more list of Incidents to be updated say ‘updatelistIncident’
// Below query fetches records from 30 to 32 days. As per our discussion the incident should be closed
//only after 30 days. So modify below filter logic.
listIncident = [SELECT Id FROM BMCServiceDesk__Incident__c
WHERE (BMCServiceDesk__Status_ID__c = 'Resolved'
OR BMCServiceDesk__TemplateName__c = 'Incident Resolved')
AND BMCServiceDesk__FKRequestDefinition__c = ''
AND (BMCServiceDesk__StatusChangeDate__c = LAST_N_DAYS:0
OR BMCServiceDesk__StatusChangeDate__c = LAST_N_DAYS:31
OR BMCServiceDesk__StatusChangeDate__c = LAST_N_DAYS:32) LIMIT 100];
for(BMCServiceDesk__Incident__c up: listIncident)
// Below code line assign status id instead of status value
up.BMCServiceDesk__FKStatus__c = 'a4Bw0000000CcCNEA0';
// Add to updatelistIncident list instead of current list below
// change list name variable below