Modern operation of complex systems such as trains and aircraft generates vast amounts of data. This data can be used to help predict component failures which may lead to considerable savings, reduce the number of delays, increase the overall throughput of the organization, and augment safety. Many data mining algorithms, such as neural networks, decision trees, and support vector machines, exist to learn models from vast amounts of data but their application to real world operational data from systems such as aircraft and trains is very challenging. For successful prognostics, several difficulties need to be carefully addressed including data selection, data fusion, data labeling, model integration, and model evaluation. This paper explains these issues and presents a methodology that we have developed to address them in a systematic manner. The paper discusses the application of the methodology to the rail and aerospace industries and highlights open problems.