Like the Apple iPhone or Samsung Galaxy, each phone delivers the same core functionality and your CMMS is no different. I have implemented homegrown and vendor CMMS packages. However, from a pure maintenance perspective they deliver the same planning and scheduling information. The process depends upon the end-users and the software selection comes down to their specific features advantages and benefits to your organization. Getting the CMMS closest to the end-user requirements is the real key. Minimizing customization and drive configuration as much as possible. Interface management is also a contributing factor and the change management effort required.
However, the main challenge today (in my opinion) with CMMS programs is that they are static and all have lagging indicators. Criticality is dynamic based (especially for offshore rigs for example) and operational conditions dictate criticality. Another, is we need the flexibility to add leading indicators that would help our predictive maintenance. Hierarchy trees and standards are another that requires a lot of thought. ISO 14224 is a good document but there are gaps and criticality is not addressed.
Basically it takes a lot of effort up front and the more work you in the planning stage helps execution for the best end result!