This approach is necessary when you have obviously outgrown your legacy software and realize that it has become much harder to maintain. As you start looking at the readily available options, there turn out to be no out-of-the-box solutions that fit your specific case. Actually, custom software may be required even when a seemingly suitable off-the-shelf solution is available, but you just need more scalability, flexibility, and efficiency.