I work for a Managed Service Provider that also works with quite a few break-fix clients. For our managed clients, we work with them to create an IT budget and a plan to bring them to a supported world before the January 14 2020 D-Day (replace 2-3 legacy windows machines a month for instance) and even do much of the legwork at trying to get legacy software (vendors that may not even exist anymore) running on modern operating systems when possible.
Aside from legacy software compatibility, the core problem is that many companies do not have an IT budget and fail to plan. These small businesses undervalue their IT infrastructure and have the mistaken mentality that “if is working, why change it?”
If I approach an unmanaged break-fix client with no IT budget they balk at the cost of:
1) New server. “Why can’t I just keep using my 10-year-old server?”
2) licensing costs (Server, Cals etc) For instance an SBS 2011 client who still has to keep email on premise that now has many more licenses to consider
3) Cost the vendor charges to migrate their line of business application or, in most cases, the cost to renew their long-expired support contract that they decided to not renew after their last upgrade was complete. (One vendor wants them to pay for every year prior)
4) Labor cost to perform the actual domain, exchange and file migrations.
If a client has an IT budget and plans accordingly, these do not become issues.