Most enterprise-level applications need to integrate with other applications used by the same organization. These integrations cater to different layers, like Data, Business Logic, Presentation and Security, depending on the requirement. This helps organizations achieve greater levels of operational consistency, efficiency and quality. 

Speaking further on the different layers and integration features available at each level for an enterprise-level application, we have: 

  • User Interface 
  • Business Logic 
  • Data 

Possible Ways to Integrate with Salesforce are:

  • User Interface Integration is one great way to surface various applications inside Salesforce with little redesign of each individual app. It provides your users a single point of entry into multiple applications.
  • Security Integration incorporates different layers of security like Org level, object level, field level and record level security. These are implemented using profiles, permission sets, sharing settings which provide any application a robust and flexible model to manage org and data securely.
  • Data Integration uses SOAP APIs and REST APIs. It typically handles data synchronization requirements, where one application in an enterprise acts as the primary source for a particular business object, like Account. It requires no coding in Salesforce, which is an advantage, but then it cannot implement any custom logic.
  • Business Logic Integration helps extend the business logic present in with outside platforms. In the case of inbound logic integration, it is handled using Apex Web Services for Inbound and Apex Callouts for Outbound. It typically handles a scenario where business logic is spread across several applications to implement the complete end-to-end business process.

Apex Web Services allow us to write logic and expose it as a web service with external applications. We can apply project-specific business logic while exposing web services. 

Apex Callouts invoke external web services that utilize SOAP, and WSDL or REST Services. Two ways to generate callouts are importing the WSDL into Apex or by HTTP (RESTful) Services classes.