У нас тоже теоретически могут оставаться не расформированные интерфейсы на железках, но пока никто не жаловался на такую проблему. Видимо хватает организационных решений.
На вашем месте я бы скрипт написал, который раз в сутки проходит и закрывает статусом закрытые датой договоры.
зы. Я даже скрипт у себя нашел, только он не используется:
Код:
import bitel.billing.server.util.*;
import java.sql.*;
import bitel.billing.server.contract.bean.ContractStatus;
import bitel.billing.server.contract.bean.ContractStatusManager;
public void main( setup, con, conSlave )
{
//Закрываем статусом закрытые датой договоры, если дата закрытия = вчера
print("Закрываем статусом закрытые датой договоры, если дата закрытия = вчера");
PreparedStatement ps = con.prepareStatement("select c.id from contract c where c.date2=date(now())- interval 1 day");
ResultSet rs = ps.executeQuery();
while(rs.next()){
ContractStatus cs = new ContractStatus();
cs.setContractId(rs.getInt(1));
cs.setComment("Договор закрыт датой => закрываем статусом со следующего дня");
cs.setStatus(3);
cs.setDate1(Calendar.getInstance());
ContractStatusManager csm = new ContractStatusManager(con);
csm.changeStatus(cs, 0);
print("Закрыт договор: id="+cs.getContractId());
}
}

Можно также выбирать не "закрытые вчера", а вообще все закрытые датой, у которых статус = активен