So what do you do? Develop a new one in-house right? DON'T!
All software needs to develop over time, much like business or science, not only because the demands on them change but because the users change. As the world moves forward people learn new things and develop, if your app, tool, function or software does not it will become less usable even if it still performs the necessary function.
Third party developers work full time to make sure their software is good. Your in-house team does not. If you're lucky or experienced enough to know that everything has to be updated from time to time you'll schedule development time from time to time to update your app. But it's still lagging behind the third party version. It might do exactly what you need, but that need will probably change faster than your app is updated.
Many companies grow into this problem and than takes it to it's logical extreme. Make the team a dedicated department of your company.
But now you've basically created a company. And this team will get more and more out of touch with the goals and difficulties of the original company. Not to mention that to grow they'll need to meet demands from outside the parent company.
There is another way to do it. Use third party apps. If the software takes over a function in your company, so that you can't change it, you were in a lot of trouble before the software fails you anyway.
UPDATE: After some constructive criticism from Christopher McCann I'm forced to admit that the post is rather Utopian since it depends on not having to replace legacy systems that already lock you in to a certain way to handle data. I still prefer the idea that data should be more important than system, but it is Utopian, anyway thanks Christopher!
UPDATE2: After even more criticism, this time from Magnus Engdal, I must concede the point that while my slightly Utopian post might be true for LAMP software it doesn't really work for MS systems because of the size of the community and availability of solutions.