There are some important and critical things developers must think before starting the integration. In an enterprise, it will use different kinds of software on different platforms. This is the biggest issue which all the developers will face.
For an enterprise a developer or a team of developers cannot create a whole system, because it is a time consuming task. So what the developers do is, they try to integrate the existing software products. But there are some software products which offers its source code, but not almost all the software products do that thing. This will make the process more difficult.
An integrated system, applications must communicate with each other. But if an application totally depended on another application it will be a mess. Think if "A" application request some thing from "B" but "B" fails to respond to that request. If this kind of a thing happens, what "A" application must do? So the developer must integrate the system with low coupling to avoid such a situation. As in this case, "A" an use a time-out and send a error message to continue its work.
As I mentioned, there are some software products which offer its source code. But if a developer try to change the coding as he/she wish, it will create a performance issue on that software. So the developer must try to integrate the system with a minimum amount of changes.
Other thing is the technology which use to integrate the system. There are various kinds of techniques and most of them need some special knowledge hardware and some other things. That thing also a problem we should think.
As an integrated system applications must understand what the other application send to it. So the communication media (maybe a message or a signal) should be in a common data format. Developer must convert the message into a common format before it leave that sub system.
Even if these systems can communicate with each other, still there are some issues. If a sub system is sharing its data among other sub systems, every sub system must use it within a short time frame. Because, if a single sub system is using a shared resource it will lock that resource and other sub systems will wait until that resource is available. so the developer must think about the time limitations.
If the enterprise system got a common functionality, it will create another issue. Sharing a functionality between sub systems is not a simple task. And also if the system need to communicate with a remote system like a banking system or a shipping system that thing also add more weight on developers. These areas will me more complex.
The most important thing is the reliability. The information which send from a sub system should be reliable. Developers most make those communication in a secure manner. This will be a huge issue when it comes to remote communication.
These are the most important thing a development team must think before developing an enterprise system. If a single information goes wrong, it will be a huge damage to the company. So the developer must use the suitable solutions as it requires in an integration.