Moving applications to the cloud can be a huge pain, or it can be very easy. The reason for this range of effort is the architecture of the application -- that is, the complexity of the application.
An enterprise could save millions of dollars in a few short years by moving applications to the public cloud. But the fact of the matter is that many enterprise applications are a huge mess. Not only are they complex, they likely have wired-in dependencies that mean the application won’t run in the cloud without a lot of rework.
That translates into both high cost and risk. Not only does it cost money and time to fix these bad applications, there's a risk they'll fail or break other stuff when reworked. You'll have the same costs and risks if you move them to another on-premises platform, of course, which is why so few enterprises do so, though they should.
Here's my advice:
First, if your application is designed incorrectly, you’ll have to fix it no matter what. You should refactor that damned thing to take advantage of the best platform, cloud or not. Moving it to the cloud simply gives you a fixed day of reckoning for that effort you need to do anyhow.
Second, calculate the ROI. Does the cost of refactoring the application justify the efficiencies you’ll gain in the cloud? The answer is almost always yes, so you may want to chart a course to fix the application first and then port it to the cloud.
Now is time to fish or cut bait -- you now have good platform alternatives in front of you, so there's a good reason to stop putting off that bad-app pain.