Service-oriented architecture (SOA) is believed to be the most efficient integration concept to overcome the complexities of building agile business systems. The biggest advantage offered by SOA is functionality reuse through service enabled applications. This prevents utilities from abandoning existing legacy systems in order to support new technology. Although SOA presents many promising advantage for integrating legacy systems, many issues need to be resolved. First of all, legacy systems usually have proprietary data definitions. This often creates the semantic discrepancy between them and other applications. The gap between the proprietary data definition and SOA semantic foundation needs to be bridged. Second, business logics and functionalities with legacy systems are usually tightly coupled. Exposing useful business processes and logics through web service in SOA environment requires carefully design with consideration of service granularity and interaction. Third, some critical legacy systems, like energy management system (EMS), have high performance requirement. Making them service enabled shouldn't sacrifice the performance. Based on a real-world SOA project, this paper explains how the above issues are resolved in order to integrate legacy systems within the SOA.