There are no hard and fast rules for rolling out an ESB, but it helps if your systems/platforms already have the following capabilities:
- Most of your components speak or understand XML
- You have abstracted interfaces
- The platform components have basic SOA capabilities, (services adhere to agreements, are loosely coupled, hide logic from the outside world, are stateless, and are discoverable)
- Majority of manual and hard wired business processes like batch jobs have been wrapped in by web services, (preferably using REST)
- You need to orchestrate communications between internal applications, (i.e. ERP to CRM) or to build composite applications, (web portal presenting data from various applications)
- Integrate information, (not only data), sources from heterogeneous environment, (intranet, extranet, line-of business applications)
- Operate on real-time data and service many messages with small data sizes, (i.e. single bank transaction, single order information, etc.)