In Dynamics CRM 2011 every entity has its own StateCode and StatusCode values. Below example code works with Account and Contact entities. For other entities check entity metadata for Statecode and StatusCode values and update the value accordingly.
//Deactivate a record public static void DeactivateRecord(string entityName, Guid recordId, IOrganizationService organizationService) { var cols = new ColumnSet(new[] { "statecode", "statuscode" }); //Check if it is Active or not var entity = organizationService.Retrieve(entityName, recordId, cols); if (entity != null && entity.GetAttributeValue<OptionSetValue>("statecode").Value == 0) { //StateCode = 1 and StatusCode = 2 for deactivating Account or Contact SetStateRequest setStateRequest = new SetStateRequest() { EntityMoniker = new EntityReference { Id = recordId, LogicalName = entityName, }, State = new OptionSetValue(1), Status = new OptionSetValue(2) }; organizationService.Execute(setStateRequest); } } //Activate a record public static void ActivateRecord(string entityName, Guid recordId, IOrganizationService organizationService) { var cols = new ColumnSet(new[] { "statecode", "statuscode" }); //Check if it is Inactive or not var entity = organizationService.Retrieve(entityName, recordId, cols); if (entity != null && entity.GetAttributeValue<OptionSetValue>("statecode").Value == 1) { //StateCode = 0 and StatusCode = 1 for activating Account or Contact SetStateRequest setStateRequest = new SetStateRequest() { EntityMoniker = new EntityReference { Id = recordId, LogicalName = entityName, }, State = new OptionSetValue(0), Status = new OptionSetValue(1) }; organizationService.Execute(setStateRequest); } }