Existe um amplo conjunto de aplicativos existentes em uma variedade de linguagens de programação que são úteis e podem ser utilizados como serviços. É possível utilizar a SOA (Arquitetura Orientada a Serviços) e o WebSphere ESB para fornecer esses aplicativos como serviços, com pouca ou nenhuma alteração nos aplicativos.
Uma maneira de fornecer um aplicativo existente como um serviço, é criar um gateway SOA que converta as interfaces do aplicativo existente em interfaces em conformidade com a SOA. Isso não implica em interrupção na codificação do aplicativo; portanto, não é necessário nenhum teste de retrocesso do aplicativo. O aplicativo pode continuar sendo utilizado sem interrupções através das interfaces existentes, mas poderá sofrer algum impacto de desempenho devido à conversão para interfaces SOA.
Outra maneira é incluir interfaces SOA nos aplicativos, juntamente com suas interfaces existentes. Normalmente isso resulta em um melhor design de interfaces e um melhor desempenho geral, porque as interfaces SOA podem ser utilizadas sem código extra de conversão. As novas interfaces SOA precisariam de recursos de testes e desenvolvimento e poderiam ocorrer algumas interrupções nos serviços à medida que as novas interfaces são implementadas. Depois da implementação, o aplicativo poderá ser utilizado por intermédio das interfaces existentes ou das novas interfaces SOA.
É possível remodelar o aplicativo em componentes SOA reutilizáveis e combinar esses componentes em uma solução modular SOA. Isso fornece um aplicativo mais flexível que pode fazer uma melhor reutilização da lógica de negócios e permite se beneficiar de técnicas SOA e outras práticas modernas de programação. Esta forma de fornecer aplicativos como serviços tem um impacto significativo no aplicativo existente e na sua utilização e, normalmente, é aplicável a sistemas críticos.