Contract SLAs were not triggering if "Contract" field on Incident is empty
That's an expected behavior.
SLA processing behaves slightly differently when the "Service Level Management - Contract Management Integration" ("com.snc.sla.contract2") plugin is installed.
As soon as an SLA Definition has been related to a Contract, it is removed from the general pool of SLA Definitions that are evaluated for that Task type as it is viewed as a Contract specific SLA Definition (although this does not stop it from being related to multiple Contracts). This then means that unless one of the Contracts that SLA Definition is related to is populated in the Contract field on the Task (e.g. Incident) then it will not be evaluated for that record.
To fix this issue, They can either manually fill the Contract field on the Incident record. Or create a Business rule to automatically populate when incident gets created.